Browse Source

chore: 日志调整
1. 日志按照文件滚动更新
2. 文件内日志移除颜色字符

kindring 1 year ago
parent
commit
687daedfe7
3 changed files with 31 additions and 7 deletions
  1. 2 1
      package.json
  2. 1 1
      src/app.ts
  3. 28 5
      src/lib/logger.ts

+ 2 - 1
package.json

@@ -11,7 +11,8 @@
     "ts-node": "^10.9.1",
     "typescript": "^5.0.3",
     "wake_on_lan": "^1.0.0",
-    "winston": "^3.8.2"
+    "winston": "^3.8.2",
+    "winston-daily-rotate-file": "^4.7.1"
   },
   "devDependencies": {
     "@types/express": "^4.17.17",

+ 1 - 1
src/app.ts

@@ -12,6 +12,7 @@ function main():void{
         logger.error("无法加载服务器配置文件");
         throw new Error("无法加载服务器配置文件");
     }
+
     const app:Application = express();
     app.use(morganMiddleware);
     app.use('/static',express.static('./public/'));
@@ -23,7 +24,6 @@ function main():void{
     app.use('/api',apiIndex);
     app.use((req,res)=>{
         res.sendStatus(404);
-        // res.send("404");
     })
     app.listen(serverConfig.webPort, function(){
         logger.info(`web服务以启动,监听端口为: 0.0.0.0:${serverConfig.webPort}`)

+ 28 - 5
src/lib/logger.ts

@@ -1,5 +1,5 @@
 import winston from 'winston'
-
+import dailyRotateFile from 'winston-daily-rotate-file'
 const levels = {
     error: 0,
     warn: 1,
@@ -14,6 +14,7 @@ const level = () => {
     return isDevelopment ? 'debug' : 'warn'
 }
 
+
 const colors = {
     error: 'red',
     warn: 'yellow',
@@ -24,6 +25,17 @@ const colors = {
 
 winston.addColors(colors)
 
+
+
+// 计算日志文件时间 YYYY-MM-DD
+function computeTimestamp() {
+    let date = new Date();
+    let year = date.getFullYear();
+    let month = date.getMonth() + 1;
+    let day = date.getDate();
+    return `${year}-${month}-${day}`;
+}
+
 const format = winston.format.combine(
     winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss:ms' }),
     winston.format.colorize({ all: true }),
@@ -32,13 +44,24 @@ const format = winston.format.combine(
     ),
 )
 
+const dailyRotateFileOption = {
+    format: winston.format.uncolorize(),
+    datePattern: 'YYYY-MM-DD',
+    maxSize: '20m',
+    maxFiles: '30d',
+}
 const transports = [
     new winston.transports.Console(),
-    new winston.transports.File({
-        filename: 'logs/error.log',
-        level: 'error',
+    new dailyRotateFile({
+        ...dailyRotateFileOption,
+        filename: `logs/%DATE%-error.log`,
+        level: 'error'
     }),
-    new winston.transports.File({ filename: 'logs/all.log' }),
+    new dailyRotateFile({
+        ...dailyRotateFileOption,
+        filename: `logs/%DATE%-all.log`,
+    })
+
 ]
 
 const Logger = winston.createLogger({