web-dev-server
Version:
Node.js simple http server for common development or training purposes.
99 lines (98 loc) • 4.99 kB
TypeScript
/// <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;
}