Skip to content

angelxmoreno/typeorm-pino-logger

Repository files navigation

TypeORM Pino Logger

A Pino logger adapter for TypeORM that provides structured logging with configurable options and advanced features.

npm version License: MIT

Features

  • 🚀 High-performance logging with Pino
  • 📊 Structured JSON logging
  • ⚙️ Configurable logging levels and options
  • 🐌 Slow query detection and logging
  • 📝 Query parameter logging with truncation
  • 🔍 Migration and schema operation logging
  • 🎯 Customizable context for all log entries
  • 🔧 QueryRunner context extraction (connection, database, transaction status)
  • ✂️ Automatic query truncation for large queries
  • 🤫 Message filtering to suppress unwanted logs
  • 🛡️ Type-safe implementation with TypeScript

Quick Start

Installation

bun add typeorm-pino-logger pino typeorm

Basic Usage

import { DataSource } from 'typeorm';
import pino from 'pino';
import { TypeOrmPinoLogger } from 'typeorm-pino-logger';

const logger = pino();
const typeormLogger = new TypeOrmPinoLogger(logger);

const dataSource = new DataSource({
  type: 'postgres',
  host: 'localhost',
  port: 5432,
  username: 'user',
  password: 'password',
  database: 'mydb',
  logger: typeormLogger,
  logging: true,
  // ... other TypeORM options
});

Usage with Message Filtering

Suppress unwanted log messages, such as glob pattern discovery notices during startup:

import { TypeOrmPinoLogger, FilterFunction } from 'typeorm-pino-logger';

const filterOutGlobMessages: FilterFunction = (message, type) => {
  if (type === 'general' && message.startsWith('All classes found using provided glob pattern')) {
    return false; // Suppress this message
  }
  return true; // Log all other messages
};

const typeormLogger = new TypeOrmPinoLogger(logger, {
  messageFilter: filterOutGlobMessages,
});

// ... then use this logger in your DataSource

That's it! Your TypeORM queries will now be logged with structured JSON output.

Documentation

📚 Full Documentation - Complete guides and examples

Quick Links

Development

# Install dependencies
bun install

# Build the project
bun run build

# Run tests
bun test

# Type checking
bun run check-types

# Linting
bun run lint

License

MIT - See LICENSE for more information.

Contributing

Please see CONTRIBUTING.md for details on how to contribute to this project.