UNPKG

xinc

Version:

基于napcat,node-napcat-ts的bot框架

110 lines 3.93 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Logger = void 0; const chalk_1 = __importDefault(require("chalk")); const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); class Logger { constructor(level = 'info') { this.level = level; // 创建日志目录 const logDir = path_1.default.join(process.cwd(), 'log'); if (!fs_1.default.existsSync(logDir)) { fs_1.default.mkdirSync(logDir, { recursive: true }); } // 创建日志文件名 (格式: YYYY-MM-DD-HH-mm-ss.log) const now = new Date(); const timestamp = [ now.getFullYear(), now.getMonth() + 1, now.getDate(), now.getHours(), now.getMinutes(), now.getSeconds() ].map(n => String(n).padStart(2, '0')).join('-'); this.logFile = path_1.default.join(logDir, `${timestamp}.log`); // 创建日志写入流 this.logStream = fs_1.default.createWriteStream(this.logFile, { flags: 'a' }); // 记录启动信息 this.info(`日志系统初始化,日志级别: ${level},日志文件: ${this.logFile}`); } getLevelPriority(level) { const priorities = { debug: 0, info: 1, warn: 2, error: 3, silent: 4 }; return priorities[level]; } shouldLog(messageLevel) { return this.getLevelPriority(messageLevel) >= this.getLevelPriority(this.level); } getTimestamp() { const now = new Date(); const year = now.getFullYear(); const month = String(now.getMonth() + 1).padStart(2, '0'); const day = String(now.getDate()).padStart(2, '0'); const hours = String(now.getHours()).padStart(2, '0'); const minutes = String(now.getMinutes()).padStart(2, '0'); const seconds = String(now.getSeconds()).padStart(2, '0'); return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; } formatLogMessage(level, args) { // 将参数转换为字符串 const formattedArgs = args.map(arg => { if (typeof arg === 'object') { try { return JSON.stringify(arg); } catch (e) { return String(arg); } } return String(arg); }).join(' '); return `[${this.getTimestamp()}] ${level}: ${formattedArgs}\n`; } writeToFile(level, args) { const logMessage = this.formatLogMessage(level, args); this.logStream.write(logMessage); } debug(...args) { if (!this.shouldLog('debug')) return; console.log(chalk_1.default.gray(`[${this.getTimestamp()}] DEBUG:`), ...args); this.writeToFile('DEBUG', args); } info(...args) { if (!this.shouldLog('info')) return; console.log(chalk_1.default.green(`[${this.getTimestamp()}] INFO:`), ...args); this.writeToFile('INFO', args); } warn(...args) { if (!this.shouldLog('warn')) return; console.log(chalk_1.default.yellow(`[${this.getTimestamp()}] WARN:`), ...args); this.writeToFile('WARN', args); } error(...args) { if (!this.shouldLog('error')) return; console.log(chalk_1.default.red(`[${this.getTimestamp()}] ERROR:`), ...args); this.writeToFile('ERROR', args); } // 关闭日志流 close() { return new Promise((resolve) => { this.logStream.end(() => { resolve(); }); }); } } exports.Logger = Logger; //# sourceMappingURL=Logger.js.map