簡體   English   中英

使用 winston 和 morgan 登錄中間件

[英]Loggin middleware with winston and morgan

我使用winston和morgan創建了一個記錄器中間件,如下所示:

  const format = winston.format.combine(
    winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss:ms' }),
    winston.format.printf(
      (info) => `${info.timestamp} ${info.level}: ${info.message}`,
    ),
  )

  const transports = [
    new winston.transports.Console(),
    new winston.transports.File({
      filename: 'logs/error.log',
      level: 'error',
    }),
    new winston.transports.File({ filename: 'logs/all.log' }),
  ]

  const logger = winston.createLogger({
    format,
    level: "info",
    transports
  })

  const stream = {
    write: (message) => logger.log(message),
  };

  const morganMiddleware = morgan(
    ":remote-addr :method :url :status :res[content-length] - :response-time ms",
    { stream }
  );

  app.use(morganMiddleware);

但是當我開始運行並接收到第一個日志時,winston 向我拋出了這個錯誤:

level[LEVEL] = level.level;
                   ^

TypeError: Cannot create property 'Symbol(level)' on string '::1 GET /api/amr/applications?order=ASC&sortBy=application.lastIncidentAt 304 - - 380.459 ms

有人可以告訴我我的 winston/morgan 配置有什么問題嗎?

謝謝你的幫助!

Winston 記錄器需要兩個 arguments。 所以代替這個:

const stream = {
  write: (message) => logger.log(message),
};

做這個:

const stream = {
  write: (message) => logger.log('info', message),
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM