Spaces:
Paused
Paused
| import chalk from 'chalk'; | |
| /** | |
| * 日志级别枚举 | |
| */ | |
| export const LogLevel = { | |
| DEBUG: 0, | |
| INFO: 1, | |
| WARNING: 2, | |
| ERROR: 3, | |
| SUCCESS: 4, | |
| }; | |
| /** | |
| * 统一的日志管理器 | |
| */ | |
| class Logger { | |
| constructor(name = 'app') { | |
| this.name = name; | |
| this.level = LogLevel.INFO; | |
| } | |
| setLevel(level) { | |
| this.level = level; | |
| } | |
| debug(message) { | |
| if (this.level <= LogLevel.DEBUG) { | |
| console.log(chalk.gray(`[debug][${this.name}] ${message}`)); | |
| } | |
| } | |
| info(message) { | |
| if (this.level <= LogLevel.INFO) { | |
| console.log(chalk.blue(`[info][${this.name}] ${message}`)); | |
| } | |
| } | |
| warning(message) { | |
| if (this.level <= LogLevel.WARNING) { | |
| console.warn(chalk.yellow(`[warn][${this.name}] ${message}`)); | |
| } | |
| } | |
| error(message, error = null) { | |
| if (this.level <= LogLevel.ERROR) { | |
| console.error(chalk.red(`[error][${this.name}] ${message}`)); | |
| if (error && error.stack) { | |
| console.error(chalk.red(error.stack)); | |
| } | |
| } | |
| } | |
| success(message) { | |
| if (this.level <= LogLevel.SUCCESS) { | |
| console.log(chalk.green(`[success][${this.name}] ${message}`)); | |
| } | |
| } | |
| request(method, path, status, time) { | |
| if (this.level <= LogLevel.INFO) { | |
| const statusColor = status >= 500 ? chalk.red : | |
| status >= 400 ? chalk.yellow : | |
| status >= 300 ? chalk.cyan : | |
| status >= 200 ? chalk.green : chalk.white; | |
| console.log(`${chalk.magenta(`[${method}]`)} - ${path} ${statusColor(status)} ${chalk.gray(`${time}ms`)}`); | |
| } | |
| } | |
| } | |
| // 创建默认日志实例 | |
| export const defaultLogger = new Logger(); | |
| // 创建具名日志实例的工厂函数 | |
| export function createLogger(name) { | |
| return new Logger(name); | |
| } | |
| // 导出默认方法 | |
| export default { | |
| debug: (message) => defaultLogger.debug(message), | |
| info: (message) => defaultLogger.info(message), | |
| warning: (message) => defaultLogger.warning(message), | |
| error: (message, error) => defaultLogger.error(message, error), | |
| success: (message) => defaultLogger.success(message), | |
| request: (method, path, status, time) => defaultLogger.request(method, path, status, time), | |
| setLevel: (level) => defaultLogger.setLevel(level), | |
| }; | |