npm.io
24.39.0 • Published 18h ago

@onivoro/server-pino

Licence
MIT
Version
24.39.0
Deps
2
Size
16 kB
Vulns
0
Weekly
0

@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-pino

Overview

This library provides:

  • A configuration class for nestjs-pino with 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.debuglogger.debug
  • console.errorlogger.error
  • console.infologger.info
  • console.loglogger.info
  • console.tracelogger.trace
  • console.warnlogger.warn

API Reference

ServerPinoConfig

Constructor options:

  • excludeUrls?: (string | RegExp)[] - URLs to exclude from auto-logging (default: ['/api/health'])
  • All standard nestjs-pino Params options
ServerPinoModule
ServerPinoModule.configure(config: ServerPinoConfig, patchConsoleInstance?: boolean)
  • config - ServerPinoConfig instance
  • patchConsoleInstance - 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 the moduleFactory function

License

MIT