Browse Source

🎈 perf: 优化日期类

Pchen. 9 months ago
parent
commit
8a84cd0777
1 changed files with 17 additions and 14 deletions
  1. 17 14
      lib/Logger.js

+ 17 - 14
lib/Logger.js

@@ -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}`));
+            });
         }
         }
     }
     }