|
@@ -3,20 +3,23 @@ const path = require('path');
|
|
|
const chalk = require('chalk');
|
|
const chalk = require('chalk');
|
|
|
|
|
|
|
|
class Logger {
|
|
class Logger {
|
|
|
- constructor(logFilePath = null, level = 'INFO') {
|
|
|
|
|
|
|
+ constructor(level = 'INFO') {
|
|
|
this.logLevels = ['INFO', 'WARN', 'ERROR'];
|
|
this.logLevels = ['INFO', 'WARN', 'ERROR'];
|
|
|
- this.level = level.toUpperCase(); //不区分大小写 可以偷懒
|
|
|
|
|
- this.logFilePath = logFilePath ? path.resolve(logFilePath) : null;
|
|
|
|
|
|
|
+ this.level = level.toUpperCase();
|
|
|
|
|
|
|
|
- if (this.logFilePath) {
|
|
|
|
|
- // 确保日志目录存在
|
|
|
|
|
- const dir = path.dirname(this.logFilePath);
|
|
|
|
|
- if (!fs.existsSync(dir)) {
|
|
|
|
|
- fs.mkdirSync(dir, { recursive: true });
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ // 默认日志目录 ./logs
|
|
|
|
|
+ this.logDir = path.resolve(process.cwd(), 'logs');
|
|
|
|
|
+ if (!fs.existsSync(this.logDir)) {
|
|
|
|
|
+ fs.mkdirSync(this.logDir, { recursive: true });
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // 获取当天日志文件路径
|
|
|
|
|
+ getLogFilePath() {
|
|
|
|
|
+ const dateStr = new Date().toISOString().split('T')[0]; // YYYY-MM-DD
|
|
|
|
|
+ return path.join(this.logDir, `${dateStr}.log`);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
log(level, message) {
|
|
log(level, message) {
|
|
|
level = level.toUpperCase();
|
|
level = level.toUpperCase();
|
|
|
if (this.logLevels.indexOf(level) >= this.logLevels.indexOf(this.level)) {
|
|
if (this.logLevels.indexOf(level) >= this.logLevels.indexOf(this.level)) {
|
|
@@ -41,11 +44,11 @@ class Logger {
|
|
|
|
|
|
|
|
console.log(coloredMessage);
|
|
console.log(coloredMessage);
|
|
|
|
|
|
|
|
- if (this.logFilePath) {
|
|
|
|
|
- fs.appendFile(this.logFilePath, `${logMessage}\n`, (err) => {
|
|
|
|
|
- if (err) throw err;
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ // 保存到文件
|
|
|
|
|
+ const logFilePath = this.getLogFilePath();
|
|
|
|
|
+ fs.appendFile(logFilePath, `${logMessage}\n`, (err) => {
|
|
|
|
|
+ if (err) console.error(chalk.red(`日志写入失败: ${err.message}`));
|
|
|
|
|
+ });
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|