我正在尝试记录请求对象(用于调试目的)。我的 NestJS 应用程序使用express(默认选项)。
我在控制器和服务提供者中都获取了请求对象(在后一种情况下注入后)。控制器中的相关部分是:
// this is the Logger from @nestjs/common
private readonly logger = new Logger(MessagesController.name);
@Get()
findAll(@Req() request: Request): string
{
this.logger.log(request);
return this.messagesService.findAll();
}
服务提供者中的相关部分是:
// the service is request-scoped since it's injected with a request-scoped provider
@Injectable({scope: Scope.REQUEST})
export class MessagesService {
constructor(@Inject(REQUEST) private request: Request) {
this.request = request;
}
findAll(): string {
this.logger.log(this.request);
return "all messages";
}
}
在两种发生日志记录的情况下(即在控制器和服务中),对象都会简单地记录在控制台上,因为[object Object]
这根本没有帮助。如果对的调用this.logger.log(request)
被替换为普通的,则console.log(request)
该对象会很好地打印在控制台上。
我如何才能Logger
很好@nestjs/common
地打印这些请求对象?
您可以覆盖或扩展默认记录器,但老实说,最简单的方法是在记录请求之前将请求转换为字符串:
编辑: 要克服圆形物体,您可以使用
util.inspect
: