@untools/logger
Version:
An enhanced logger for JavaScript/TypeScript that handles DOM elements and circular references
92 lines (91 loc) • 2.54 kB
TypeScript
export declare enum LogLevel {
ERROR = 0,
WARN = 1,
INFO = 2,
DEBUG = 3
}
interface LoggerOptions {
showInProd?: boolean;
includeTimestamp?: boolean;
maxDepth?: number;
maxStringLength?: number;
enableCircularHandling?: boolean;
domElementFormat?: "inspect" | "summary" | "disabled";
prettyPrint?: boolean;
indentSize?: number;
colors?: boolean;
logLevel?: LogLevel;
namespace?: string;
enabled?: boolean;
context?: Record<string, unknown>;
}
declare class Logger {
private showInProd;
private includeTimestamp;
private maxDepth;
private maxStringLength;
private enableCircularHandling;
private domElementFormat;
private prettyPrint;
private indentSize;
private useColors;
private logLevel;
private namespace;
private enabled;
private env;
private consoleColors;
private browserColors;
private context;
constructor(options?: LoggerOptions, context?: Record<string, unknown>);
/**
* Returns a new Logger instance with merged context.
* Useful for request-scoped logging (Wide Events pattern).
*/
child(context: Record<string, unknown>): Logger;
/**
* Alias for child(context).
*/
withContext(context: Record<string, unknown>): Logger;
/**
* Adds context to the current logger instance.
*/
addContext(context: Record<string, unknown>): void;
/**
* Sets the context, overwriting existing context.
*/
setContext(context: Record<string, unknown>): void;
/**
* Clears all context.
*/
clearContext(): void;
/**
* Sets the log level.
* @param {LogLevel} level - The new log level
*/
setLogLevel(level: LogLevel): void;
/**
* Enables or disables logging.
* @param {boolean} enabled - Whether to enable logging
*/
setEnabled(enabled: boolean): void;
private getEnvironment;
private getCallerInfo;
private formatMetadata;
private mergeContextWithArgs;
private formatDOMElement;
private colorizeText;
private getIndentation;
private formatArgument;
private _log;
log(...args: unknown[]): void;
debug(...args: unknown[]): void;
info(...args: unknown[]): void;
warn(...args: unknown[]): void;
error(...args: unknown[]): void;
group(label: string): void;
groupEnd(): void;
time(label: string): void;
timeEnd(label: string): void;
}
declare const logger: Logger;
export { Logger, logger, type LoggerOptions };