Skip to content

medishen/md-logger

Repository files navigation

Medishn-logger

A customizable and modular logger designed for both console and file-based logging with support for file rotation, buffering, color personalization, and modular transport handling.

Features

  • Console and File Logging: Log messages to both console and file with custom formats.
  • File Rotation: Automatically rotate log files based on size.
  • Buffering: Buffer logs and flush them at intervals or when reaching a buffer size.
  • Color Personalization: Customize log message colors for better console readability.
  • Modular Transports: Easily configure and extend logging transports (console, file).
  • Customizable Log Levels: Use predefined log levels (info, warn, error, debug) or set your own.
  • Default Levels: The default log level is info if not specified.

Installation

npm install @medishn/logger

Usage

Basic Setup

import { Logger } from '@medishn/logger';

const logger = new Logger({
  transports: ['console', 'file'],
  file: 'app.log',
});

logger.log({
  message: 'Application started',
  level: 'info',
  category: 'APP',
});

Customizing Log Colors

You can personalize console log colors for each log level.

const logger = new Logger({
  transports: ['console'],
  console: {
    colors: {
      info: '\x1b[32m', // green
      warn: '\x1b[33m', // yellow
      error: '\x1b[31m', // red
      debug: '\x1b[34m', // blue
    },
  },
});

logger.log({ message: 'Server started', level: 'info' });

File Rotation and Buffering

You can specify file rotation settings, such as maximum file size, and buffer log entries to be flushed at regular intervals.

const logger = new Logger({
  transports: ['file'],
  file: 'app.log',
  rotation: { maxSize: 1024 * 1024 }, // 1MB file size before rotating
});

logger.log({ message: 'Logging to file with rotation', level: 'debug' });

API

Logger Class

  • Constructor:
    • opts: Options
      • transports: Array<"console" | "file">: Specifies where to log (console, file, or both).
      • file?: string: The path for the log file.
      • format?: "iso" | "locale": Log date format (default is "iso").
      • rotation?: { maxSize: number }: File rotation settings.
      • console?: { colors: Record<LogLevel, string> }: Custom console log colors.
  • Methods:
    • log(args: Arguments.Log): Log a message.
    • close(): Closes the file transport and flushes any remaining logs.

License

This project is licensed under the MIT License.