@adrianhall/cloudflare-toolkit
@adrianhall/cloudflare-toolkit / lib/hono / cloudflareLogger
Function: cloudflareLogger()
cloudflareLogger(
options?):MiddlewareHandler<{Variables:LoggerVariables; }>
Defined in: src/lib/hono/logger-middleware.ts:133
Create Hono middleware that attaches a request-scoped Logger to the context as LOGGER (LoggerVariables, ./types.ts), so downstream middleware and handlers can log through it.
The logger's level and transport are resolved via resolveLoggerConfig(environment, "worker") (@adrianhall/cloudflare-toolkit/logging) unless overridden. The minimum level is chosen in this order of precedence:
options.level, when supplied.- The
LOG_LEVELWorker binding (c.env.LOG_LEVEL), when it is a recognised LogLevel (case-insensitive). A value that is set but unrecognised is ignored with aconsole.warn. - The environment-resolved default from
resolveLoggerConfig(environment, "worker").
The transport defaults to resolveLoggerConfig's choice unless overridden by options.transport. This middleware is independently wireable — it has no dependency on cloudflareAccess.
Parameters
options?
Options controlling the environment, level, and transport used to build the logger.
Returns
MiddlewareHandler<{ Variables: LoggerVariables; }>
A Hono MiddlewareHandler parameterised with LoggerVariables, so c.set("LOGGER", …) inside this middleware — and c.get("LOGGER") in a consumer's own handlers once composed via app.use(...) — are statically checked against LoggerVariables rather than accepted as an untyped magic string.
Example
import { Hono } from "hono";
import { cloudflareLogger } from "@adrianhall/cloudflare-toolkit/hono";
const app = new Hono();
app.use(cloudflareLogger());
app.get("/", (c) => {
c.get("LOGGER").info("handling request");
return c.text("ok");
});