Skip to content

medishen/gland-logger

Repository files navigation

gland-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/gland-logger

Usage

Basic Setup

import { Logger } from "@medishn/gland-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.