ExpressWinston无法登录200 HTTP响应代码

时间:2019-04-16 15:25:25

标签: node.js express logging winston

我正在使用ExpressWinston登录Node.js应用程序。我们可以记录每个被调用的静态资源的请求吗?

如果没有找到文件(200),记录器不会记录日志,但是如果没有找到文件(404),它将记录日志。 例如,如果请求有效,例如http://domain/css/existingfile.css,则Logger不会记录日志。 但是,如果请求无效,如http://domain/css/non-existingfile.css,则Logger会记录正确的404状态代码。

当还找到文件时,我需要日志(200)。 expressWinston如何配置为使用服务器返回的任何状态码记录所有请求?

致谢

1 个答案:

答案 0 :(得分:0)

我下面的配置使用ExpressWinston和winston-mongodb将所有请求记录在mongodb数据库中,而不管状态码如何。您可以根据需要将传输方式更改为控制台或文件。您将根据您的白名单获取每个请求和响应的相关元数据。

expressWinston.responseWhitelist.push('body')

const requestLog = expressWinston.logger({
  transports: [
    new winston.transports.MongoDB({
      db: db,
      options: {
        useNewUrlParser: true,
        poolSize: 2,
        autoReconnect: true
      }
    })
  ],
  meta: true,
  msg: (req, res) => 'HTTP {{req.method}} {{req.url}};',
  requestWhitelist: [
   'url',
   'method',
   'httpVersion',  
   'originalUrl',
   'query',
   'body'
  ]
});

只需将传输数组中的代码替换为

transports: [
  new winston.transports.Console()
]

如果要在控制台中显示。