@qcksys/pino-cloudflare
v0.1.0
Published
Pino logger configured for Cloudflare Workers observability: emits structured JSON to console.debug/info/warn/error mapped from pino levels.
Maintainers
Readme
@qcksys/pino-cloudflare
A pino logger preconfigured for Cloudflare Workers observability. Emits
structured JSON log objects to console.debug / console.info /
console.warn / console.error so that Workers Logs captures them as
structured, queryable fields.
Pino levels are routed as follows:
| pino level | console method |
| ---------------- | --------------- |
| trace, debug | console.debug |
| info | console.info |
| warn | console.warn |
| error, fatal | console.error |
Install
pnpm add @qcksys/pino-cloudflare pinopino is a peer dependency.
Usage
import { createLogger } from "@qcksys/pino-cloudflare";
const log = createLogger({ level: "info" });
export default {
async fetch(req: Request): Promise<Response> {
const child = log.child({ requestId: crypto.randomUUID() });
child.info({ url: req.url }, "request received");
return new Response("ok");
},
} satisfies ExportedHandler;createLogger(options?) accepts any pino LoggerOptions except browser
(which is owned by this library) and transport (not supported in
Workers). The browser key is partially exposed so that you can still
configure formatters, serialize, transmit, etc.:
createLogger({
level: "debug",
browser: {
serialize: true,
},
});If you prefer to construct pino yourself, import the raw options:
import pino from "pino/browser.js";
import { workersBrowserOptions } from "@qcksys/pino-cloudflare";
const log = pino({ ...workersBrowserOptions, level: "info" });Development
pnpm install
pnpm test
pnpm build