mirror of
https://github.com/immich-app/immich
synced 2025-11-14 17:36:12 +00:00
feat(server): logging interceptor (#8859)
This commit is contained in:
parent
c70d9f9055
commit
14b1425e98
2 changed files with 30 additions and 0 deletions
28
server/src/middleware/logging.interceptor.ts
Normal file
28
server/src/middleware/logging.interceptor.ts
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
import { CallHandler, ExecutionContext, Inject, Injectable, NestInterceptor } from '@nestjs/common';
|
||||
import { Observable, finalize } from 'rxjs';
|
||||
import { ILoggerRepository } from 'src/interfaces/logger.interface';
|
||||
|
||||
@Injectable()
|
||||
export class LoggingInterceptor implements NestInterceptor {
|
||||
constructor(@Inject(ILoggerRepository) private logger: ILoggerRepository) {
|
||||
this.logger.setContext(LoggingInterceptor.name);
|
||||
}
|
||||
|
||||
intercept(context: ExecutionContext, next: CallHandler<any>): Observable<any> {
|
||||
const handler = context.switchToHttp();
|
||||
const req = handler.getRequest();
|
||||
const res = handler.getResponse();
|
||||
|
||||
const { method, ip, path } = req;
|
||||
|
||||
const start = performance.now();
|
||||
return next.handle().pipe(
|
||||
finalize(() => {
|
||||
const finish = performance.now();
|
||||
const duration = (finish - start).toFixed(2);
|
||||
const { statusCode } = res;
|
||||
this.logger.verbose(`${method} ${path} ${statusCode} ${duration}ms ${ip}`);
|
||||
}),
|
||||
);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue