Package Exports
- @logtape/hono
- @logtape/hono/package.json
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@logtape/hono) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@logtape/hono
This package provides Hono middleware for HTTP request logging using LogTape as the backend, as an alternative to Hono's built-in logger middleware.
Installation
deno add jsr:@logtape/hono # for Deno
npm add @logtape/hono # for npm
pnpm add @logtape/hono # for pnpm
yarn add @logtape/hono # for Yarn
bun add @logtape/hono # for BunUsage
import { Hono } from "hono";
import { configure, getConsoleSink } from "@logtape/logtape";
import { honoLogger } from "@logtape/hono";
await configure({
sinks: { console: getConsoleSink() },
loggers: [
{ category: ["hono"], sinks: ["console"], lowestLevel: "info" }
],
});
const app = new Hono();
app.use(honoLogger());
app.get("/", (c) => c.json({ hello: "world" }));
export default app;Options
The honoLogger() function accepts an optional options object:
app.use(honoLogger({
category: ["myapp", "http"], // Custom category (default: ["hono"])
level: "debug", // Log level (default: "info")
format: "dev", // Predefined format (default: "combined")
skip: (c) => c.req.path === "/health", // Skip logging for specific paths
logRequest: true, // Log at request start (default: false)
}));Predefined formats
The middleware supports Morgan-compatible predefined formats:
"combined": Apache Combined Log Format with all properties (default)"common": Apache Common Log Format (without referrer/userAgent)"dev": Concise output for development (e.g.,GET /path 200 1.234 ms - 123)"short": Shorter format with remote address"tiny": Minimal output
Custom format function
You can also provide a custom format function:
app.use(honoLogger({
format: (c, responseTime) => ({
method: c.req.method,
path: c.req.path,
status: c.res.status,
duration: responseTime,
}),
}));The formatter callback receives the real Hono Context, so you can also read
context variables when your app uses them:
app.use(honoLogger({
format: (c, responseTime) => ({
requestId: c.get("requestId"),
method: c.req.method,
path: c.req.path,
duration: responseTime,
}),
}));Structured logging output
When using the "combined" format (default), the middleware logs structured
data that includes:
method: HTTP request methodurl: Request URLpath: Request pathstatus: HTTP response status coderesponseTime: Response time in millisecondscontentLength: Response content-length header valueuserAgent: User-Agent header valuereferrer: Referrer header value
See also
For more information, see the LogTape documentation.