@onivoro/server-pino
v24.33.9
Published
A thin wrapper around `nestjs-pino` for NestJS applications, providing a configuration class and console patching functionality.
Readme
@onivoro/server-pino
A thin wrapper around nestjs-pino for NestJS applications, providing a configuration class and console patching functionality.
Installation
npm install @onivoro/server-pino nestjs-pinoOverview
This library provides:
- A configuration class for
nestjs-pinowith sensible defaults - A console patching function to redirect console methods to Pino logger
- A module that integrates with NestJS
Usage
Module Setup
import { ServerPinoModule, ServerPinoConfig } from '@onivoro/server-pino';
const config = new ServerPinoConfig({
excludeUrls: ['/api/health', /^\/api\/metrics/]
});
@Module({
imports: [
ServerPinoModule.configure(config)
]
})
export class AppModule {}Configuration Class
The ServerPinoConfig class extends nestjs-pino Params interface with default settings:
const config = new ServerPinoConfig({
excludeUrls: ['/api/health'], // URLs to exclude from auto-logging
useExisting: true, // Use existing logger instance
renameContext: 'app' // Rename context property
});Default configuration includes:
- Auto-generated request IDs using
randomUUID() - Redaction of sensitive headers (authorization, cookies, API keys, etc.)
- Info level logging
- Exclusion of specified URLs from auto-logging
Console Patching
Replace console methods with Pino logger:
import { patchConsole } from '@onivoro/server-pino';
import { PinoLogger } from 'nestjs-pino';
const logger = new PinoLogger(config);
const { restore } = patchConsole(logger);
// Now console methods use Pino
console.log('This goes to Pino');
console.error('This is an error');
// Restore original console if needed
restore();Patched methods:
console.debug→logger.debugconsole.error→logger.errorconsole.info→logger.infoconsole.log→logger.infoconsole.trace→logger.traceconsole.warn→logger.warn
API Reference
ServerPinoConfig
Constructor options:
excludeUrls?: (string | RegExp)[]- URLs to exclude from auto-logging (default:['/api/health'])- All standard
nestjs-pinoParams options
ServerPinoModule
ServerPinoModule.configure(config: ServerPinoConfig, patchConsoleInstance?: boolean)config- ServerPinoConfig instancepatchConsoleInstance- Whether to patch console methods (default:false)
patchConsole
function patchConsole(logger: PinoLogger): {
_console: PinoLogger;
restore: () => void;
}Complete Example
import { Module } from '@nestjs/common';
import { ServerPinoModule, ServerPinoConfig } from '@onivoro/server-pino';
const pinoConfig = new ServerPinoConfig({
excludeUrls: ['/api/health', '/api/metrics'],
pinoHttp: {
level: process.env.LOG_LEVEL || 'info',
transport: process.env.NODE_ENV === 'development' ? {
target: 'pino-pretty',
options: {
colorize: true
}
} : undefined
}
});
@Module({
imports: [
ServerPinoModule.configure(pinoConfig, true) // Enable console patching
]
})
export class AppModule {}Dependencies
This library depends on:
nestjs-pino- The underlying Pino integration for NestJS@nestjs/common- NestJS common utilities@onivoro/server-common- For themoduleFactoryfunction
License
MIT
