pino-zen
v3.2.0
Published
Zen for Pino logging
Readme
pino-zen
Colored log formatter for Pino JSON logs.

Install
npm install pino-zenUsage
Pino Transport
Use pino-zen directly as a Pino transport for colored console output alongside other targets:
import pino from "pino";
const level = process.env.LOG_LEVEL
if (!["debug", "info", "warn", "error", "trace"].includes(level)) {
throw new Error(`Invalid log level: ${level}`);
}
const logger = pino({
level,
transport: {
targets: [
{ target: "pino/file", level, options: { destination: "app.log", append: false } },
{ target: "pino-zen", level, options: {} },
],
},
formatters: {
bindings() {
return {}; // Return empty object to exclude pid and hostname
},
},
});Module Mode
Pino Zen includes a "Module Mode" that prepends a color-coded and right-aligned module name to your logs. This is especially useful for microservices or mono-repos where you want to distinguish logs from different components at a glance.
Performance & Alignment
Module names are automatically tracked, and the prefix is right-aligned based on the longest module name encountered during the process lifecycle.
const logger = pino({
transport: {
target: "pino-zen",
options: { module: "module" },
}
});
logger.info({ module: "api" }, "request processed");
logger.info({ module: "auth" }, "user verified");Output:
[api] INFO:request processed
[auth] INFO:user verifiedCLI Pipe
Pipe any NDJSON log output through the pino-zen CLI:
node app.js | pino-zenCLI Options
| Flag | Short | Description | Example |
|------|-------|-------------|---------|
| --module | -m | Use a field as the module prefix | pino-zen -m module |
Example usage:
node app.js | pino-zen -m service