我正在使用ExpressWinston登录Node.js应用程序。我们可以记录每个被调用的静态资源的请求吗?
如果没有找到文件(200),记录器不会记录日志,但是如果没有找到文件(404),它将记录日志。 例如,如果请求有效,例如http://domain/css/existingfile.css,则Logger不会记录日志。 但是,如果请求无效,如http://domain/css/non-existingfile.css,则Logger会记录正确的404状态代码。
当还找到文件时,我需要日志(200)。 expressWinston如何配置为使用服务器返回的任何状态码记录所有请求?
致谢
答案 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()
]
如果要在控制台中显示。