@logtape/hono
v2.0.4
Published
Hono adapter for LogTape logging library
Maintainers
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,
}),
}));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.
