@re-ai/volc-knowledge
Version:
火山引擎知识库接口接入SDK
101 lines (87 loc) • 2.49 kB
text/typescript
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();