/**
* 日志工具
*/
export enum LogLevel {
DEBUG = 'DEBUG',
INFO = 'INFO',
WARN = 'WARN',
ERROR = 'ERROR',
}
export class Logger {
private level: LogLevel;
constructor(level: LogLevel = LogLevel.INFO) {
this.level = level;
}
debug(message: string, ...args: any[]): void {
if (this.shouldLog(LogLevel.DEBUG)) {
console.log(`[DEBUG] ${message}`, ...args);
}
}
info(message: string, ...args: any[]): void {
if (this.shouldLog(LogLevel.INFO)) {
console.log(`[INFO] ${message}`, ...args);
}
}
warn(message: string, ...args: any[]): void {
if (this.shouldLog(LogLevel.WARN)) {
console.warn(`[WARN] ${message}`, ...args);
}
}
error(message: string, ...args: any[]): void {
if (this.shouldLog(LogLevel.ERROR)) {
console.error(`[ERROR] ${message}`, ...args);
}
}
private shouldLog(level: LogLevel): boolean {
const levels = [LogLevel.DEBUG, LogLevel.INFO, LogLevel.WARN, LogLevel.ERROR];
const currentLevelIndex = levels.indexOf(this.level);
const messageLevelIndex = levels.indexOf(level);
return messageLevelIndex >= currentLevelIndex;
}
}