UNPKG

multi-lane-manager

Version:

Nacos 泳道管理与请求路由组件

83 lines (72 loc) 2.66 kB
import { createConsola } from 'consola'; import type { ConsolaInstance, LogLevel } from 'consola'; import { DEFAULT_LOG_LEVEL } from './defaults'; /** * 日志级别映射 * 将字符串日志级别映射到数字级别 */ const LOG_LEVELS: Record<string, LogLevel> = { 'silent': 0, // 不输出任何日志 'fatal': 1, // 只输出致命错误 'error': 2, // 输出错误信息 'warn': 3, // 输出警告和错误信息 'info': 4, // 输出重要信息、警告和错误(默认级别) 'success': 4, // 与 info 同级 'debug': 5, // 输出调试信息和 info 级别以上的日志 'trace': 6, // 输出跟踪信息和 debug 级别以上的日志 'verbose': 6 // 与 trace 同级 }; /** * 日志管理器配置接口 * 定义创建日志管理器时可以设置的选项 */ export interface LoggerOptions { prefix?: string; // 日志前缀 level?: LogLevel | string; // 日志级别 timestamps?: boolean; // 是否显示时间戳 mockFn?: (...args: any[]) => void; // 用于测试的模拟函数 } /** * 创建一个日志管理器实例 * @param options 日志管理器配置选项 * @returns 配置好的 Consola 实例 */ export function createLogger(options: LoggerOptions = {}): ConsolaInstance { // 从环境变量获取日志级别,使用默认值 const envLogLevel = process.env.LOG_LEVEL || process.env.LANE_LOG_LEVEL || DEFAULT_LOG_LEVEL; // 确定最终日志级别 let level: LogLevel = 4; // 默认为 info 级别 if (typeof options.level === 'number') { // 如果直接提供了数字级别 level = options.level; } else if (typeof options.level === 'string' && LOG_LEVELS[options.level.toLowerCase()] !== undefined) { // 如果提供了字符串级别并且它在映射中存在 level = LOG_LEVELS[options.level.toLowerCase()]; } else if (LOG_LEVELS[envLogLevel.toLowerCase()] !== undefined) { // 如果环境变量中的级别在映射中存在 level = LOG_LEVELS[envLogLevel.toLowerCase()]; } // 创建 consola 实例 const logger = createConsola({ level, formatOptions: { date: options.timestamps !== false, // 默认显示时间戳 colors: true, // 启用颜色 }, }); // 如果提供了前缀,创建一个带前缀的 logger if (options.prefix) { return logger.withTag(options.prefix); } return logger; } /** * 默认日志管理器实例 * 使用 '泳道管理' 作为前缀 */ export const logger = createLogger({ prefix: '泳道管理' }); /** * 导出日志级别常量 * 可以用于设置日志级别 */ export const LogLevels = LOG_LEVELS;