@nwire/logger
v0.7.1
Published
Nwire — Logger contract + Noop + Console defaults. Production adapters: @nwire/logger-pino, @nwire/logger-winston. Envelope ids auto-attached via loggerForEnvelope.
Readme
@nwire/logger
Logger contract — interface every Nwire layer logs against, with Noop + Console defaults.
What it is
A tiny Logger interface (debug / info / warn / error + child(bindings)) so framework code can log without binding to a specific implementation. Ships a silent NoopLogger (test default) and a JSON-line ConsoleLogger (dev default). Production wires plug in @nwire/logger-pino or any structured adapter that conforms.
Install
pnpm add @nwire/loggerWithin nwire-app
For developers using this package as part of the Nwire stack. ctx.logger is already attached per request with envelope ids (correlationId, causationId, tenant, userId) bound. Touch this package directly only when implementing a custom adapter.
import { loggerForEnvelope, ConsoleLogger } from "@nwire/logger";
import { seedEnvelope } from "@nwire/envelope";
const root = new ConsoleLogger({ level: "info" });
const env = seedEnvelope({ source: "http", tenant: "acme" });
const log = loggerForEnvelope(root, env);
log.info({ courseId: "c-1" }, "course requested");
// → {"level":"info","correlationId":"...","tenant":"acme","courseId":"c-1","msg":"course requested"}API
Logger— interface every adapter implements.NoopLogger— silent default; use in tests.ConsoleLogger— JSON-line stdout; use in dev.loggerForEnvelope(parent, envelope)— derives a child logger with envelope ids pre-bound.
