@logtide/hono
v0.5.6
Published
LogTide SDK middleware for Hono — request tracing and error capture
Readme
Features
- Automatic request spans for every incoming request
- Error capture with full request context
- W3C Trace Context propagation (
traceparentin/out) - Breadcrumbs for HTTP requests
- Scope access via
c.get('logtideScope') - Works everywhere — Node.js, Bun, Deno, Cloudflare Workers
- Full TypeScript support with strict types
Installation
npm install @logtide/hono
# or
pnpm add @logtide/hono
# or
yarn add @logtide/honoQuick Start
import { Hono } from 'hono';
import { logtide } from '@logtide/hono';
const app = new Hono();
app.use('*', logtide({
dsn: 'https://[email protected]',
// Or use apiUrl + apiKey instead of dsn:
// apiUrl: 'https://your-instance.com',
// apiKey: 'lp_your_key',
service: 'my-hono-api',
environment: 'production',
}));
app.get('/hello', (c) => c.json({ message: 'Hello World' }));
export default app;How It Works
The middleware runs on every request and:
- Extracts incoming
traceparentheader (or generates a new trace ID) - Creates a span named after the request (e.g.
GET /hello) - Stores scope on the Hono context (
c.set('logtideScope', scope)) - Calls
next()to process the request - Finishes the span with
okorerrorbased on response status - Injects
traceparentinto the response headers - Captures errors thrown by handlers with full context
Accessing the Scope
Use c.get() to access the LogTide scope inside your handlers:
app.get('/users/:id', (c) => {
const scope = c.get('logtideScope');
const traceId = c.get('logtideTraceId');
// Add custom breadcrumbs
scope.addBreadcrumb({
type: 'query',
category: 'database',
message: 'SELECT * FROM users WHERE id = ?',
timestamp: Date.now(),
});
return c.json({ id: c.req.param('id') });
});Configuration
All ClientOptions from @logtide/core are supported:
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| dsn | string | required | DSN string: https://lp_KEY@host/PROJECT |
| service | string | required | Service name for log attribution |
| environment | string | — | Environment (e.g. production, staging) |
| release | string | — | Release / version identifier |
| debug | boolean | false | Enable debug logging |
| tracesSampleRate | number | 1.0 | Sample rate for traces (0.0 to 1.0) |
See @logtide/core README for the full list of options.
Error Handling
Errors thrown by handlers are automatically captured with:
- HTTP method and URL
- Request span marked as
error - Error serialized with stack trace
app.get('/boom', () => {
throw new Error('Something broke');
// Automatically captured by LogTide middleware
});For 5xx responses (e.g. from Hono's error handler), the middleware also logs an error entry.
Exports
import { logtide } from '@logtide/hono';
import type { LogtideHonoOptions } from '@logtide/hono';License
MIT License - see LICENSE for details.
