feat: exception logger (#4059)

This commit is contained in:
X1a0t
2023-09-01 12:05:35 +08:00
committed by GitHub
parent b0024080bd
commit d4a83c1c6f
4 changed files with 54 additions and 15 deletions
@@ -0,0 +1,38 @@
import {
ArgumentsHost,
Catch,
ExceptionFilter,
HttpException,
Logger,
} from '@nestjs/common';
import { Request, Response } from 'express';
import { REQUEST_ID } from '../constants';
@Catch(HttpException)
export class ExceptionLogger implements ExceptionFilter {
private logger = new Logger('ExceptionLogger');
catch(exception: Error, host: ArgumentsHost) {
const ctx = host.switchToHttp();
const request = ctx.getRequest<Request>();
const requestId = request?.header(REQUEST_ID);
this.logger.error(
new Error(
`${requestId ? `requestId-${requestId}:` : ''}${exception.message}`,
{ cause: exception }
),
exception.stack
);
const response = ctx.getResponse<Response>();
if (exception instanceof HttpException) {
response.json(exception.getResponse());
} else {
response.status(500).json({
message: exception.message,
statusCode: 500,
});
}
}
}