From cffb1b070b6f7734ccefd47fcc26bd5e67ab84cb Mon Sep 17 00:00:00 2001 From: opcatdev Date: Fri, 8 Nov 2024 00:12:18 +0800 Subject: [PATCH] Add tracker logging interceptor --- packages/tracker/src/logging.interceptor.ts | 27 +++++++++++++++++++++ packages/tracker/src/main-api.ts | 3 +++ 2 files changed, 30 insertions(+) create mode 100644 packages/tracker/src/logging.interceptor.ts diff --git a/packages/tracker/src/logging.interceptor.ts b/packages/tracker/src/logging.interceptor.ts new file mode 100644 index 0000000..098598e --- /dev/null +++ b/packages/tracker/src/logging.interceptor.ts @@ -0,0 +1,27 @@ +import { + CallHandler, + ExecutionContext, + Injectable, + NestInterceptor, +} from '@nestjs/common'; +import { Observable } from 'rxjs'; +import { tap } from 'rxjs/operators'; + +@Injectable() +export class LoggingInterceptor implements NestInterceptor { + intercept(context: ExecutionContext, next: CallHandler): Observable { + const request = context.switchToHttp().getRequest(); + const method = request.method; + const url = request.url; + const requestId = `${Date.now()}${Math.floor(Math.random() * 1000)}`; + const startTime = Date.now(); + + console.log(`[${requestId}] ${method} ${url}`); + return next.handle().pipe( + tap(() => { + const responseTime = Date.now() - startTime; + console.log(`[${requestId}] Completed in ${responseTime}ms`); + }), + ); + } +} diff --git a/packages/tracker/src/main-api.ts b/packages/tracker/src/main-api.ts index b73c35f..863a9a4 100644 --- a/packages/tracker/src/main-api.ts +++ b/packages/tracker/src/main-api.ts @@ -3,6 +3,7 @@ import { AppApiModule } from './app-api.module'; import * as ecc from '@bitcoin-js/tiny-secp256k1-asmjs'; import { initEccLib } from 'bitcoinjs-lib'; import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'; +import { LoggingInterceptor } from './logging.interceptor'; async function bootstrap() { initEccLib(ecc); @@ -30,6 +31,8 @@ async function bootstrap() { app.setGlobalPrefix('api'); app.enableCors(); + app.useGlobalInterceptors(new LoggingInterceptor()); + await app.listen(process.env.API_PORT || 3000); console.log(`tracker api is running on: ${await app.getUrl()}`); }