feat(nestlogged): add exception type on overrideBuild

This commit is contained in:
Shinwoo PARK 2025-03-30 03:05:31 +09:00
parent 0deaac596e
commit 9c4fdbd2b9
2 changed files with 15 additions and 3 deletions

View File

@ -1,4 +1,4 @@
import { Logger, ExecutionContext } from '@nestjs/common';
import { Logger, ExecutionContext, ArgumentsHost } from '@nestjs/common';
import { LoggedParamReflectData, ReturnsReflectData } from '../reflected';
import { LoggedMetadata } from './metadata';
import {
@ -26,7 +26,7 @@ export function overrideBuild<F extends Array<any>, R>(
route: string,
): (...args: F) => R;
export function overrideBuild<F extends Array<any>, R>(
type: 'function' | 'guard' | 'interceptor' | 'middleware',
type: 'function' | 'guard' | 'interceptor' | 'middleware' | 'exception',
originalFunction: (...args: F) => R,
_target: any,
metadatas: FunctionMetadata,
@ -98,6 +98,16 @@ export function overrideBuild<F extends Array<any>, R>(
[name, key],
req[REQUEST_LOG_ID],
);
} else if (type === 'exception') {
const req = (args[1] as ArgumentsHost).switchToHttp().getRequest();
if (req[REQUEST_LOG_ID] === undefined) {
req[REQUEST_LOG_ID] = ScopedLogger.createScopeId();
}
args[metadatas.scopedLoggerInjectableParam] = ScopedLogger.fromRoot(
baseLogger,
[name, key],
req[REQUEST_LOG_ID],
);
} else if (type === 'route') {
// args[metadatas.scopedLoggerInjectableParam] is now Request object, thanks to code in @LoggedRoute!!!!
let req = args[metadatas.scopedLoggerInjectableParam];

View File

@ -32,7 +32,8 @@ export type BuildType =
| 'function'
| 'guard'
| 'interceptor'
| 'middleware';
| 'middleware'
| 'exception';
const callLogIdentifyMessageDictionary: Record<BuildType, string> = {
route: 'ENDPOINT',
@ -40,6 +41,7 @@ const callLogIdentifyMessageDictionary: Record<BuildType, string> = {
guard: 'GUARD',
interceptor: 'INTERCEPTOR',
middleware: 'MIDDLEWARE',
exception: 'EXCEPTION FILTER',
};
export function createCallLogIdentifyMessage(