@beignet/provider-logger-pino
v0.0.3
Published
Pino logger provider for Beignet - adds logger port using pino
Maintainers
Readme
@beignet/provider-logger-pino
Pino-backed LoggerPort provider for Beignet.
Use this package when you want ctx.ports.logger backed by Pino while keeping
application code dependent on the stable LoggerPort interface from
@beignet/core/ports.
Install
bun add @beignet/core @beignet/provider-logger-pino pinoPretty development logs are optional:
bun add -d pino-prettySetup
import { createNextServer } from "@beignet/next";
import { loggerPinoProvider } from "@beignet/provider-logger-pino";
import { appPorts } from "@/infra/app-ports";
export const server = await createNextServer({
ports: appPorts,
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,
actorId: ctx.actor.type === "user" ? ctx.actor.id : undefined,
});
const log = ctx.ports.logger.child({ requestId: ctx.requestId });
log.error("Failed to publish post", { error });Exports
| Export | Purpose |
| --- | --- |
| loggerPinoProvider | Ready-to-install Beignet provider |
| LoggerPinoConfig | Validated provider config type |
| LoggerPort | Re-export from @beignet/core/ports |
| LogLevel | Re-export from @beignet/core/ports |
Read next
- Docs site logging guide: https://beignet.dev/logging
- Providers: https://beignet.dev/providers
- Pino documentation: https://getpino.io/
License
MIT
