Morgan 的文档描述了可以拆分请求和响应的日志记录:
拆分/双重记录
中间件可以根据
morgan
需要多次使用,实现如下组合:
- 根据请求记录条目,在响应中记录条目
- 将所有请求记录到文件,但将错误记录到控制台
在他们唯一相关的示例中,有一些注释描述了一个中间件将记录错误响应到控制台,另一个请求记录到文件:
// log only 4xx and 5xx responses to console app.use(morgan('dev', { skip: function (req, res) { return res.statusCode < 400 } })) // log all requests to access.log app.use(morgan('common', { stream: fs.createWriteStream(path.join(__dirname, 'access.log'), {flags: 'a'}) }))
这似乎实现了将所有请求记录到文件并将错误记录到控制台的第二个示例,但不是第一个示例。
我有点迷茫,我不明白morgan
只记录请求或只记录响应的意思。我是否必须关心将这些中间件正确放置在哪里?
目前,我对请求和响应都有一个日志条目,我猜:
morgan('[:date[clf]] :remote-addr :url :method HTTP/:http-version :status :remote-user :res[content-length] :referrer :user-agent :response-time ms', {
stream: {
write: (message) => {
winston.silly(message.trim());
}
}
});
那么,如何在中间件调用中正确记录请求,并在另一个调用中记录响应?morgan