Node.js 在winston中记录每个请求的请求信息

Node.js 在winston中记录每个请求的请求信息,node.js,express,logging,npm,winston,Node.js,Express,Logging,Npm,Winston,我已经扩展到打印Express/NodeJs应用程序中的每个请求、进程、错误和用户信息 但是应用程序实际上没有记录有关请求的信息 日志输出示例: 2018-02-22T11:18:44.871Z - info: root access 我认为官方教程()将引导我实现一个有效的实现。我是否错过了教程中的任何内容 整个应用程序代码: “严格使用”; const express=require('express'); 常量app=express(); const winston=require('

我已经扩展到打印Express/NodeJs应用程序中的每个请求、进程、错误和用户信息

但是应用程序实际上没有记录有关请求的信息

日志输出示例:

2018-02-22T11:18:44.871Z - info: root access
我认为官方教程()将引导我实现一个有效的实现。我是否错过了教程中的任何内容

整个应用程序代码:

“严格使用”;
const express=require('express');
常量app=express();
const winston=require('winston');
var winstonExRegLogger=require(“winston express请求记录器”);
winstonExRegLogger.createLogger({
运输:[
新建(winston.transports.Console)({
handleExceptions:正确,
时间戳:对,
级别:“信息”
})
],
exitOnError:false
});
功能配置应用程序(应用程序、环境){
app.use(winstonExRegLogger.requestDetails);
}
app.use(winstonExRegLogger.requestDetails);
var logger=require(“winston express请求记录器”).getLogger();
logger.error(“测试错误日志”);
logger.info(“测试信息日志”);
应用程序获取(“/”,(请求,请求)=>{
logger.info(“根访问”);
res.status(200).send('hello world!');
});
app.get('/home',(请求,res)=>{
logger.info(“主页”);
res.status(200)。发送('OK');
});
应用程序发布('/p',(请求,回复)=>{
logger.info('post ni');
logger.error('in post');
res.status(200)。发送(“后确认”);
});
if(模块===require.main){
const server=app.listen(process.env.PORT | | | 8081,()=>{
const port=server.address().port;
log(`App监听端口${port}`);
});
}

module.exports=app您只需要将req对象传递给logger.info调用,例如do

logger.info(req, 'home');
而不是

logger.info('home');
这将生成一条日志行,如:

2018-02-22T14:28:21.481Z - info: pId: 25868 - uId: cjdylrofa0000yktbj5rkrtsr - cId: anonymous - cIP: ::1 - cAction: GET /home home
2018-02-22T14:31:56.014Z - info: pId: 33536 - uId: cjdylw9yj0000vktbbqfeubz7 - cId: anonymous - cIP: ::1 - cAction: GET / root access

这可能就是你想要的

您只需要将req对象传递给logger.info调用,例如do

logger.info(req, 'home');
而不是

logger.info('home');
这将生成一条日志行,如:

2018-02-22T14:28:21.481Z - info: pId: 25868 - uId: cjdylrofa0000yktbj5rkrtsr - cId: anonymous - cIP: ::1 - cAction: GET /home home
2018-02-22T14:31:56.014Z - info: pId: 33536 - uId: cjdylw9yj0000vktbbqfeubz7 - cId: anonymous - cIP: ::1 - cAction: GET / root access

这可能就是你想要的

还有@Terry,是否有一种方法可以在每次发出GET或POST请求时自动创建日志条目,并将此“req”数据自动添加到每个日志条目中,而无需在每个需要日志的地方手动添加它?是的,有,express winston模块将执行此操作。我也用过这个。它将记录get/post请求的各种详细信息,而无需调用每个请求。你也可以着色!还有@Terry,是否有一种方法可以在每次发出GET或POST请求时自动创建日志条目,并将此“req”数据自动添加到每个日志条目中,而无需在每个需要日志的地方手动添加它?是的,有,express winston模块将执行此操作。我也用过这个。它将记录get/post请求的各种详细信息,而无需调用每个请求。你也可以着色!