UNPKG

web-dev-server

Version:

Node.js simple http server for common development or training purposes.

99 lines (98 loc) 4.99 kB
/// <reference types="node" /> import { WriteStream as FsWriteStream } from "fs"; import { CallSite } from "./Loggers/CallSite"; import { StackTraceItem } from "./Loggers/StackTraceItem"; export declare class Logger { static readonly LEVEL: { CRITICIAL: string; ERROR: string; WARNING: string; NOTICE: string; INFO: string; DEBUG: string; }; protected static LOGS_EXT: string; protected static instance: Logger; protected documentRoot: string; protected logsDirFullPath: string; protected streamWriting: boolean; protected maxLogFileSize: number; protected allowedLevels: Map<string, boolean>; protected logsStreams: Map<string, FsWriteStream>; protected logsStreamsLengths: Map<string, number>; protected logsCaches: Map<string, string>; protected writeStackTrace: boolean; protected writeStackTraceFuncArgs: boolean; protected maxDepth: number; /** * @summary Create new Logger instance. * @param logsDirFullPath Directory full path with log files. * @param documentRoot Application or project document root to simplify logged source file paths. */ static CreateNew(logsDirFullPath: string, documentRoot: string): Logger; /** * @summary Get logger instance as singleton. */ static GetInstance(): Logger; /** * @summary Set logger instance as singleton. * @param loggetInstance Logger instance. */ static SetInstance(loggetInstance: Logger): Logger; /** * @summary Create new Logger instance. * @param logsDirFullPath Directory full path with log files. * @param documentRoot Application or project document root to simplify logged source file paths. */ constructor(logsDirFullPath: string, documentRoot: string); /** * @summary Set max. bytes for each log file. 50 MB by default. * @see https://convertlive.com/u/convert/megabytes/to/bytes * @param maxBytes Max bytes to create another log file (as number of bytes or as string like: 1K, 5M, 1G or 1T). */ SetMaxLogFileSize(maxBytes?: number | string): Logger; /** * @summary Enable or disable writing to logs by write streams. If disabled, there is used standard file append. Disabled by default. * @param allowedLevels `true` to enable stream writing (for singleton logger) or `false` for multiple logger instances to the same files. `false` by default. */ SetStreamWriting(streamWriting?: boolean): Logger; /** * @summary Allowed levels to log. Rest of not presented levels are automatically disallowed. * @param allowedLevels Allowed levels to log like: `[Logger.LEVEL.ERROR, Logger.LEVEL.DEBUG, 'customname', ...]` */ SetAllowedLevels(allowedLevels: string[]): Logger; /** * @summary Set how to write stack trace. * @param writeStackTrace If `true`, stack trace will be written into all log types, `false` otherwise, default `true`. * @param writeStackTraceFuncArgs If `true`, stack trace will be written with called functions arguments into all log types, `false` otherwise, default `true`. Arguments serialization could be very large. */ SetStackTraceWriting(writeStackTrace?: boolean, writeStackTraceFuncArgs?: boolean): Logger; /** * @summary Set max depth to dump objects. * @param maxDepth Default is `3`. */ SetMaxDepth(maxDepth?: number): Logger; /** * @summary Log any error. * @param err Error instance to log or error message to generate an error internally and log the error instance. * @param level Log level (log file name). */ Error(err: Error | string, level?: string): Logger; /** * @summary Log any stringified JS variable into log file with stack trace. * @param obj any JS variable to log. * @param level Log level (log file name). */ Log(obj: any, level?: string): Logger; protected appendToLogFile(msg: string, level: string): Logger; protected renameFullLogFile(level: string, cb: () => void): void; protected appendToLogFileByStandardWrite(msg: string, level: string, logFullPath: string): void; protected appendToLogFileByStream(msg: string, level: string, logFullPath: string): void; protected serializeStackTrace(items: StackTraceItem[]): string; protected getStackTraceItems(stacks: CallSite[]): StackTraceItem[]; protected getStackTraceItem(stack: CallSite): StackTraceItem; protected getStackTraceItemSerializedArgs(args: any[]): string; protected serializeWhatIsPossible(obj: any, prettyPrint?: boolean, addTypeName?: boolean): string; protected stringifyRecursive(prettyPrint: boolean, addTypeName: boolean, level: number, indent: string, obj: any): any; protected getStackTraceItemFuncFullName(stack: CallSite, isTopLevel: boolean, isConstructor: boolean): string; }