@evojs/logger
Version:
Nodejs logger
42 lines (41 loc) • 963 B
TypeScript
import { type Callsite } from '@evojs/callsite';
import { type LogLevel } from './enums';
import { type Log } from './log';
export interface LoggerOptions {
/**
* Name of the logger.
*/
name?: string;
/**
* Output message formats.
*/
formats?: (string | LogFormatFn)[];
/**
* Functions for message formatting.
*/
pipes?: LogPipes;
/**
* Output log handler. Set the handler for handle output messages.
*/
handler?: (log: Log) => void;
/**
* Output log handler. Set the handler for handle output messages.
* @default 'verbose'
*/
logLevel?: LogLevel;
/**
* Callsite depth
* @default 0
*/
callsiteDepth?: number;
}
export interface LogMessage {
date: number;
level: LogLevel;
name?: string;
args: unknown[];
callsite?: Callsite | null;
}
export type PipeFn = (...args: any[]) => unknown;
export type LogPipes = Readonly<Record<string, PipeFn>>;
export type LogFormatFn = (this: LogPipes, message: LogMessage) => unknown;