xinc
Version:
基于napcat,node-napcat-ts的bot框架
110 lines • 3.93 kB
JavaScript
;
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