k88*_*074 2 error-handling node.js express bunyan
我用 node.js 和 express 构建了一个应用程序。我已经开始使用,bunyan但我很难理解热记录请求。
假设我的路由器调用这样的函数:
function(request, someOtherStuff, done){\\do something}
Run Code Online (Sandbox Code Playgroud)
whererequest是从 POST 请求生成的,并且在request.body.
我想执行以下操作:当函数内部发生错误时,我想记录错误以及req.body来自用户的请求(包括)。就像是:
if(err) {
bunyan.error(err,request);
done(err);
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以serializers: {req: reqSerializer}在 bunyan 配置中使用,但是我找不到任何实际记录请求的示例。
任何建议都受到高度赞赏。
小智 5
我实现的方法是在 app.js 中添加一个处理程序,如下所示:
app.use(function(req, res, next){
log.info(reqSerializer(req));
next();
});
Run Code Online (Sandbox Code Playgroud)
然后 reqSerializer 函数包含您想要返回的内容,例如
function reqSerializer(req) {
return {
method: req.method,
url: req.url,
headers: req.headers,
somethingCustom: ...,
}
}
Run Code Online (Sandbox Code Playgroud)
还要确保在初始化记录器时包含 reqSerializer,例如
var log = bunyan.createLogger({
name: 'myapp',
serializers: {
req: reqSerializer
},
}
Run Code Online (Sandbox Code Playgroud)
所以序列化器所做的就是序列化 req 对象,您仍然需要将它实际传递给记录器以进行记录。
| 归档时间: |
|
| 查看次数: |
4791 次 |
| 最近记录: |