@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
TypeScript
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>;