@contract-kit/provider-logger-pino
v1.0.0
Published
Pino logger provider for contract-kit - adds logger port using pino
Maintainers
Readme
@contract-kit/provider-logger-pino
Pino-backed LoggerPort provider for Contract Kit.
Use this package when you want ctx.ports.logger backed by Pino while keeping
application code dependent on the stable LoggerPort interface from
@contract-kit/ports.
Install
bun add @contract-kit/ports @contract-kit/provider-logger-pino pinoPretty development logs are optional:
bun add -d pino-prettySetup
import { createNextServer } from "@contract-kit/next";
import { loggerPinoProvider } from "@contract-kit/provider-logger-pino";
import { ports } from "@/infra/ports";
export const server = await createNextServer({
ports,
providers: [loggerPinoProvider],
createContext: ({ ports }) => ({
requestId: crypto.randomUUID(),
ports,
}),
});The provider installs ctx.ports.logger.
Environment
The provider reads LOG_-prefixed environment variables:
| Variable | Default | Description |
| --- | --- | --- |
| LOG_LEVEL | info | trace, debug, info, warn, error, or fatal |
| LOG_FORMAT | json | json or pretty |
| LOG_SERVICE | none | Optional service name added to log bindings |
| LOG_TIMESTAMP | true | Include ISO timestamps |
LOG_FORMAT=pretty requires pino-pretty. If it is unavailable, the provider
falls back to JSON logging and emits a warning.
Usage
ctx.ports.logger.info("Post published", {
postId: post.id,
userId: ctx.user.id,
});
const log = ctx.ports.logger.child({ requestId: ctx.requestId });
log.error("Failed to publish post", { error });Exports
| Export | Purpose |
| --- | --- |
| loggerPinoProvider | Ready-to-install Contract Kit provider |
| LoggerPinoConfig | Validated provider config type |
| LoggerPort | Re-export from @contract-kit/ports |
| LogLevel | Re-export from @contract-kit/ports |
Read next
- Docs site logging guide: https://contract-kit.dev/logging
- Providers: https://contract-kit.dev/providers
- Pino documentation: https://getpino.io/
License
MIT
