Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 日志会话用户NodeJs NestJs_Node.js_Nestjs_Log4js Node - Fatal编程技术网

Node.js 日志会话用户NodeJs NestJs

Node.js 日志会话用户NodeJs NestJs,node.js,nestjs,log4js-node,Node.js,Nestjs,Log4js Node,我正在尝试记录会话用户,但它没有像我想象的那样工作。我想我可以把它添加到中间件,但显然这是行不通的。是否有一个策略或模式,我应该用来实现这一点 PassportAuthInterceptor日志应该有不同的用户,但它只使用中间件设置的最后一个用户 我在log4js文档中看到他们在使用它,但很明显,我下面演示的方式似乎没有意义 我还看到,有一个AuthLibrary.currentUser()调用,但我不确定如何实现这一点 鉴于NestJS就是这样,我可以将用户以某种方式注入到服务中,因为这可以

我正在尝试记录会话用户,但它没有像我想象的那样工作。我想我可以把它添加到中间件,但显然这是行不通的。是否有一个策略或模式,我应该用来实现这一点

PassportAuthInterceptor
日志应该有不同的用户,但它只使用中间件设置的最后一个用户

我在log4js文档中看到他们在使用它,但很明显,我下面演示的方式似乎没有意义

我还看到,有一个
AuthLibrary.currentUser()
调用,但我不确定如何实现这一点

鉴于NestJS就是这样,我可以将用户以某种方式注入到服务中,因为这可以解决我的问题

导出类loggermdleware实现了嵌套中间件{
private readonly logger=new AppLoggerService(loggermdleware.name);
公用(请求、恢复、下一步:()=>void){
log4js.getLogger('default').addContext('user',user.authName)
next();
}
}

所以这有点粗糙,但它可以工作,我创建了两个记录器一个全局(正常)和一个会话(范围请求)。问题是passport登录使用的任何类都不能引用SessionLoggerService。。这将使我将类分为全局类和会话类,以便它们调用的类可以使用正确的记录器

@Injectable({scope:scope.REQUEST})
导出类SessionLoggerService实现LoggerService{
公共静态记录器=未定义;
构造函数(@Inject(REQUEST)私有只读请求){
SessionLoggerService.logger=log4js.getLogger('user');
const user=this.req&&this.req.user?this.req.user:null;
如果(用户){
SessionLoggerService.logger.addContext('user',user.authName);
}否则{
SessionLoggerService.logger.addContext('user','');
}
}
....
}