UNPKG

@incubrain/logger

Version:

A modern, format-agnostic logging library for Node.js and browser environments, built on top of Consola with additional features for enterprise applications.

93 lines (92 loc) 2.72 kB
import type { ConsolaReporter, LogObject } from "consola"; export interface FileLoggerOptions { maxFileSize?: number; maxFiles?: number; pretty?: boolean; rotateOnLimit?: boolean; timestamp?: boolean; format?: "json" | "jsonsl"; bufferSize?: number; flushInterval?: number; } /** * FileLogger - Handles writing logs to files with rotation */ export declare class FileLogger { private readonly baseFilePath; private currentFile; private writeStream; private currentSize; private isRotating; private buffer; private bufferSize; private flushTimer; private isClosed; private readonly logName; private readonly options; constructor(baseFilePath: string, options?: FileLoggerOptions, logName?: string); flush(): Promise<void>; write(entries: any, level?: "info" | "warn" | "error" | "debug"): Promise<void>; close(): Promise<void>; /** * Get the current file path with rotation index */ private getCurrentFilePath; /** * Initialize the write stream */ private initStream; /** * Set up the flush interval timer */ private setupFlushInterval; /** * Rotate log files when size limit is reached */ private rotateFiles; /** * Format a log entry for writing */ private formatLogEntry; /** * Helper method to normalize different types of log entries */ private normalizeEntries; /** * Helper methods for different log levels */ info(entries: any): Promise<void>; warn(entries: any): Promise<void>; error(entries: any): Promise<void>; debug(entries: any): Promise<void>; } /** * Creates or retrieves a logger instance */ export declare function createFileLogger(fileName: string, options?: FileLoggerOptions, loggerName?: string): FileLogger; /** * Close all file loggers safely */ export declare function closeAllFileLoggers(): Promise<void>; /** * Consola Reporter implementation for file logging */ export declare class FileReporter implements ConsolaReporter { private fileLogger; constructor(filePath: string, options?: FileLoggerOptions); log(logObj: LogObject): void; private mapTypeToLevel; end(): Promise<void>; } /** * Quick function to log to a specific file for debugging */ export declare function logFile(fileName: string, data: any, options?: FileLoggerOptions): Promise<void>; /** * Setup an error logger that captures all errors and warnings */ export declare function setupErrorLogger(options?: FileLoggerOptions): FileReporter; /** * Middleware that cleans up loggers on shutdown */ export declare function setupLoggerCleanup(): () => Promise<void>;