【发布时间】:2020-03-17 03:39:15
【问题描述】:
我想在 NestJs 中记录传入的请求和传出的响应。我从这里Logging request/response in Nest.js 和文档NestJs Aspect Interception 获取信息。
不使用外部包来实现这一点会很棒,所以我更喜欢原生的“Nest”解决方案。
对于我目前使用此代码的请求日志记录
@Injectable()
export class RequestInterceptor implements NestInterceptor {
private logger: Logger = new Logger(RequestInterceptor.name);
intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
const {
originalUrl,
method,
params,
query,
body,
} = context.switchToHttp().getRequest();
this.logger.log({
originalUrl,
method,
params,
query,
body,
});
return next.handle();
}
}
这将为GET /users 记录以下结果
我还想记录传出响应。目前我使用这个拦截器
@Injectable()
export class ResponseInterceptor implements NestInterceptor {
private logger: Logger = new Logger(ResponseInterceptor.name);
intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
const { statusCode } = context.switchToHttp().getResponse();
return next.handle().pipe(
tap(() =>
this.logger.log({
statusCode,
}),
),
);
}
}
这将为GET /users 记录以下结果
但是我怎样才能访问发回给客户端的数据呢?
【问题讨论】:
标签: javascript typescript express nestjs