nestjs-logger-pino
v0.0.1
Published
Pino-based logger for NestJS with GCP Cloud Logging format support
Maintainers
Readme
nestjs-logger-pino
Pino-based logger for NestJS with GCP Cloud Logging format support.
Features
- GCP Cloud Logging severity format (DEBUG, INFO, WARNING, ERROR, CRITICAL)
- Pretty printing for local development (pino-pretty)
- Structured logging (payload for data, error for errors)
- Automatic log flush on application shutdown
- Source map support for readable stack traces
Installation
npm install nestjs-logger-pino
# or
yarn add nestjs-logger-pinoUsage
Basic Setup
import { NestFactory } from '@nestjs/core';
import { LoggerService } from 'nestjs-logger-pino';
import { AppModule } from './app.module';
async function bootstrap() {
const logger = new LoggerService();
const app = await NestFactory.create(AppModule, { logger });
await app.listen(3000);
}
bootstrap();Logging in Services
import { Injectable } from '@nestjs/common';
import { LoggerService } from 'nestjs-logger-pino';
@Injectable()
export class MyService {
constructor(private readonly logger: LoggerService) {}
doSomething() {
// Simple message
this.logger.log('Operation completed', MyService.name);
// With payload
this.logger.debug({ userId: 123, action: 'login' }, 'User action', MyService.name);
// Error logging
this.logger.error(new Error('Something failed'), 'Operation failed', MyService.name);
}
}Using Raw Pino Logger
import { Logger } from 'nestjs-logger-pino';
// Direct pino logger access
Logger.info({ customField: 'value' }, 'Direct log message');Configuration
Configuration is done via environment variables:
| Variable | Description | Default |
|----------|-------------|---------|
| NODE_ENV | When set to local, enables pino-pretty | - |
| LOG_LEVEL | Minimum log level | debug |
Log Levels
| NestJS Method | Pino Level | GCP Severity |
|---------------|------------|--------------|
| verbose() | trace | DEBUG |
| debug() | debug | DEBUG |
| log() | info | INFO |
| warn() | warn | WARNING |
| error() | error | ERROR |
| fatal() | fatal | CRITICAL |
Log Output Format
Production (JSON)
{
"severity": "INFO",
"level": 30,
"timestamp": "2024-01-25T12:00:00.000Z",
"message": "Operation completed",
"name": "MyService",
"payload": { "userId": 123 }
}Local Development (pino-pretty)
2024-01-25 12:00:00.000 INFO: Operation completed
name: "MyService"
payload: { userId: 123 }License
MIT
