Prechádzať zdrojové kódy

add enhancement for logging

jay-choe 3 rokov pred
rodič
commit
bfb1001d4e
3 zmenil súbory, kde vykonal 14 pridanie a 6 odobranie
  1. 2 1
      package.json
  2. 9 5
      server/config/winston.ts
  3. 3 0
      server/handlers/helpers.ts

+ 2 - 1
package.json

@@ -97,7 +97,8 @@
     "use-media": "^1.4.0",
     "useragent": "^2.2.1",
     "uuid": "^3.4.0",
-    "winston": "^3.3.3"
+    "winston": "^3.3.3",
+    "winston-daily-rotate-file": "^4.7.1"
   },
   "devDependencies": {
     "@babel/cli": "^7.8.3",

+ 9 - 5
server/config/winston.ts

@@ -1,5 +1,6 @@
 import appRoot from "app-root-path";
 import winston from "winston";
+import DailyRotateFile from "winston-daily-rotate-file";
 
 const { combine, colorize, printf, timestamp } = winston.format;
 
@@ -15,21 +16,23 @@ const rawFormat = printf(info => {
 const options = {
   file: {
     level: "info",
-    filename: `${appRoot}/logs/app.log`,
+    filename: `${appRoot}/logs/%DATE%_app.log`,
+    datePattern: "YYYY-MM-DD",
     handleExceptions: true,
     json: true,
     maxsize: 5242880, // 5MB
-    maxFiles: 5,
+    maxFiles: "30d", // monthly rotation
     colorize: false
   },
   errorFile: {
     level: "error",
     name: "file.error",
-    filename: `${appRoot}/logs/error.log`,
+    filename: `${appRoot}/logs/%DATE%_error.log`,
+    datePattern: "YYYY-MM-DD",
     handleExceptions: true,
     json: true,
     maxsize: 5242880, // 5MB
-    maxFiles: 100,
+    maxFiles: "30d", // monthly rotation
     colorize: true
   },
   console: {
@@ -44,7 +47,8 @@ const options = {
 export const logger = winston.createLogger({
   format: combine(timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), logFormat),
   transports: [
-    new winston.transports.File(options.file),
+    new DailyRotateFile(options.file),
+    new DailyRotateFile(options.errorFile),
     new winston.transports.Console(options.console)
   ],
   exitOnError: false // do not exit on handled exceptions

+ 3 - 0
server/handlers/helpers.ts

@@ -5,6 +5,7 @@ import signale from "signale";
 
 import { CustomError } from "../utils";
 import env from "../env";
+import { logger } from "../config/winston";
 
 export const ip: Handler = (req, res, next) => {
   req.realIP =
@@ -13,6 +14,8 @@ export const ip: Handler = (req, res, next) => {
 };
 
 export const error: ErrorRequestHandler = (error, req, res, next) => {
+  logger.error(error);
+
   if (env.isDev) {
     signale.fatal(error);
   }