UNPKG

@re-ai/volc-knowledge

Version:

火山引擎知识库接口接入SDK

101 lines (87 loc) 2.49 kB
import chalk from 'chalk'; type LogLevel = 'debug' | 'info' | 'warn' | 'error'; interface LoggerOptions { level?: LogLevel; timestamp?: boolean; } /** * 彩色日志工具 * @param options 日志配置 */ class Logger { private level: LogLevel; private timestamp: boolean; constructor(options: LoggerOptions = {}) { this.level = options.level || process.env.REAI_VOLC_KL_LOG_LEVEL as LogLevel || 'debug'; this.timestamp = options.timestamp !== false; } private getTimestamp(): string { return new Date().toISOString(); } private formatMessage(level: LogLevel, ...messages: any[]): string { let coloredLevel: string; let formattedMessage = messages.map(msg => typeof msg === 'object' ? JSON.stringify(msg) : msg ).join(' '); switch (level) { case 'debug': coloredLevel = chalk.green(level.toUpperCase()); formattedMessage = chalk.green(formattedMessage); break; case 'info': coloredLevel = chalk.blue(level.toUpperCase()); formattedMessage = chalk.blue(formattedMessage); break; case 'warn': coloredLevel = chalk.yellow(level.toUpperCase()); formattedMessage = chalk.yellow(formattedMessage); break; case 'error': coloredLevel = chalk.red(level.toUpperCase()); formattedMessage = chalk.red(formattedMessage); break; } const parts = []; if (this.timestamp) { parts.push(`[${this.getTimestamp()}]`); } parts.push(`[${coloredLevel}]`); parts.push(formattedMessage); return parts.join(' '); } /** * 打印调试日志 * @param message 日志内容 */ debug(...messages: any[]): void { if (this.level === 'debug') { console.log(this.formatMessage('debug', ...messages)); } } /** * 打印信息日志 * @param message 日志内容 */ info(...messages: any[]): void { if (['debug', 'info'].includes(this.level)) { console.log(this.formatMessage('info', ...messages)); } } /** * 打印警告日志 * @param message 日志内容 */ warn(...messages: any[]): void { if (['debug', 'info', 'warn'].includes(this.level)) { console.warn(this.formatMessage('warn', ...messages)); } } /** * 打印错误日志 * @param message 日志内容 */ error(...messages: any[]): void { console.error(this.formatMessage('error', ...messages)); } } export const logger = new Logger();