logger.ts•1.36 kB
/**
* 简单的日志工具
*/
export class Logger {
private static instance: Logger;
private logLevel: 'debug' | 'info' | 'warn' | 'error' = 'info';
private constructor() {}
static getInstance(): Logger {
if (!Logger.instance) {
Logger.instance = new Logger();
}
return Logger.instance;
}
setLogLevel(level: 'debug' | 'info' | 'warn' | 'error'): void {
this.logLevel = level;
}
debug(message: string, ...args: any[]): void {
if (this.shouldLog('debug')) {
console.debug(`[DEBUG] ${new Date().toISOString()} - ${message}`, ...args);
}
}
info(message: string, ...args: any[]): void {
if (this.shouldLog('info')) {
console.info(`[INFO] ${new Date().toISOString()} - ${message}`, ...args);
}
}
warn(message: string, ...args: any[]): void {
if (this.shouldLog('warn')) {
console.warn(`[WARN] ${new Date().toISOString()} - ${message}`, ...args);
}
}
error(message: string, error?: Error, ...args: any[]): void {
if (this.shouldLog('error')) {
console.error(`[ERROR] ${new Date().toISOString()} - ${message}`, error, ...args);
}
}
private shouldLog(level: string): boolean {
const levels = ['debug', 'info', 'warn', 'error'];
return levels.indexOf(level) >= levels.indexOf(this.logLevel);
}
}
export const logger = Logger.getInstance();