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.
bun add @beignet/core @beignet/provider-logger-pino pino
Pretty development logs are optional:
bun add -d pino-pretty
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.
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.
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 });
| 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 |
MIT