UNPKG

@4players/odin-common

Version:

Commonly used type definitions and utility functions across ODIN web projects

85 lines (84 loc) 3.49 kB
export declare enum LogLevel { CRITICAL = 0, ERROR = 1, WARN = 2, INFO = 3, DEBUG = 4 } export declare const LogSymbols: { [Level in LogLevel]: string; }; export declare function tryParseLogLevel(text: string): LogLevel | undefined; export interface LogSink { filter: LogLevel; handle(record: LogRecord): void; } export type ConsoleObject = Pick<typeof console, 'error' | 'warn' | 'info' | 'debug'>; export type LogFormatter = (record: LogRecord) => string; export declare class Formatter { static readonly sparse: LogFormatter; static readonly json: LogFormatter; static readonly pretty: LogFormatter; static readonly structured: LogFormatter; static readonly default: LogFormatter; private constructor(); } export declare class ConsoleSink implements LogSink { protected formatter: LogFormatter; protected consoleObject: ConsoleObject; filter: LogLevel; constructor(formatter?: LogFormatter, filter?: LogLevel, consoleObject?: ConsoleObject); handle(record: LogRecord): void; } export declare class InteractiveConsoleSink extends ConsoleSink { handle(record: LogRecord): void; } export type OnLogMessage = (formattedString: string, record: LogRecord) => void; export declare class CallbackSink implements LogSink { protected formatter: LogFormatter; protected cb: OnLogMessage; filter: LogLevel; constructor(cb: OnLogMessage, formatter?: LogFormatter, filter?: LogLevel); handle(record: LogRecord): void; } export interface LoggerLike { readonly name: string | undefined; sinks: LogSink[]; filter: LogLevel; parent: LoggerLike | undefined; log(level: LogLevel, message: string, extra?: Record<string, unknown> | undefined): void; insert(record: LogRecord): void; readonly error: (message: string, extra?: Record<string, unknown>) => void; readonly warn: (message: string, extra?: Record<string, unknown>) => void; readonly info: (message: string, extra?: Record<string, unknown>) => void; readonly debug: (message: string, extra?: Record<string, unknown>) => void; } export declare class Logger implements LoggerLike { #private; sinks: LogSink[]; filter: LogLevel; parent: Logger | undefined; get name(): string | undefined; constructor(filter: LogLevel, name?: string | undefined, sinks?: LogSink[], parent?: Logger | undefined); log(level: LogLevel, message: string, extra?: Record<string, unknown> | undefined): void; insert(record: LogRecord): void; readonly error: (message: string, extra?: Record<string, unknown>) => void; readonly warn: (message: string, extra?: Record<string, unknown>) => void; readonly info: (message: string, extra?: Record<string, unknown>) => void; readonly debug: (message: string, extra?: Record<string, unknown>) => void; } export declare const GLOBAL_LOGGER: Logger; export type LogFn = (message: string, extra?: Record<string, unknown> | undefined) => void; export type LogWithLevelFn = (level: LogLevel, message: string, extra?: Record<string, unknown> | undefined) => void; export declare const error: LogFn; export declare const warn: LogFn; export declare const info: LogFn; export declare const debug: LogFn; export declare const log: LogWithLevelFn; export interface LogRecord { readonly date: Date; readonly level: LogLevel; readonly logger: LoggerLike; readonly message: string; readonly extra: Record<string, unknown> | undefined; }