back logging every request
This commit is contained in:
@@ -5,4 +5,4 @@ RUN npm install --frozen-lockfile
|
|||||||
COPY . .
|
COPY . .
|
||||||
RUN npx prisma generate
|
RUN npx prisma generate
|
||||||
RUN npm run build
|
RUN npm run build
|
||||||
CMD npx prisma migrate dev; npm run start:prod
|
CMD npx prisma migrate deploy; npm run start:prod
|
||||||
|
|||||||
895
back/package-lock.json
generated
895
back/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -36,6 +36,7 @@
|
|||||||
"bcryptjs": "^2.4.3",
|
"bcryptjs": "^2.4.3",
|
||||||
"class-transformer": "^0.5.1",
|
"class-transformer": "^0.5.1",
|
||||||
"class-validator": "^0.13.2",
|
"class-validator": "^0.13.2",
|
||||||
|
"json-logger-service": "^9.0.1",
|
||||||
"passport-jwt": "^4.0.0",
|
"passport-jwt": "^4.0.0",
|
||||||
"passport-local": "^1.0.0",
|
"passport-local": "^1.0.0",
|
||||||
"reflect-metadata": "^0.1.13",
|
"reflect-metadata": "^0.1.13",
|
||||||
|
|||||||
@@ -2,10 +2,43 @@ import { NestFactory } from '@nestjs/core';
|
|||||||
import { AppModule } from './app.module';
|
import { AppModule } from './app.module';
|
||||||
import { PrismaService } from './prisma/prisma.service';
|
import { PrismaService } from './prisma/prisma.service';
|
||||||
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
|
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
|
||||||
import { ValidationPipe } from '@nestjs/common';
|
import { CallHandler, ExecutionContext, Injectable, NestInterceptor, ValidationPipe } from '@nestjs/common';
|
||||||
|
import {RequestLogger, RequestLoggerOptions} from 'json-logger-service';
|
||||||
|
import { tap } from 'rxjs';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class AspectLogger implements NestInterceptor {
|
||||||
|
intercept(context: ExecutionContext, next: CallHandler) {
|
||||||
|
const req = context.switchToHttp().getRequest();
|
||||||
|
const res = context.switchToHttp().getResponse();
|
||||||
|
const { statusCode } = context.switchToHttp().getResponse();
|
||||||
|
const { originalUrl, method, params, query, body, user} = req;
|
||||||
|
|
||||||
|
const toPrint = {
|
||||||
|
originalUrl,
|
||||||
|
method,
|
||||||
|
params,
|
||||||
|
query,
|
||||||
|
body,
|
||||||
|
"userId": user?.id ?? "not logged in",
|
||||||
|
"username": user?.username ?? "not logged in",
|
||||||
|
};
|
||||||
|
|
||||||
|
return next.handle().pipe(
|
||||||
|
tap((data) =>
|
||||||
|
console.log(JSON.stringify({
|
||||||
|
...toPrint,
|
||||||
|
statusCode,
|
||||||
|
data
|
||||||
|
}))
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async function bootstrap() {
|
async function bootstrap() {
|
||||||
const app = await NestFactory.create(AppModule);
|
const app = await NestFactory.create(AppModule);
|
||||||
|
app.use(RequestLogger.buildExpressRequestLogger({ doNotLogPaths: ['/health'] } as RequestLoggerOptions));
|
||||||
const prismaService = app.get(PrismaService);
|
const prismaService = app.get(PrismaService);
|
||||||
await prismaService.enableShutdownHooks(app);
|
await prismaService.enableShutdownHooks(app);
|
||||||
|
|
||||||
@@ -19,6 +52,8 @@ async function bootstrap() {
|
|||||||
|
|
||||||
app.useGlobalPipes(new ValidationPipe());
|
app.useGlobalPipes(new ValidationPipe());
|
||||||
app.enableCors();
|
app.enableCors();
|
||||||
|
app.useGlobalInterceptors(new AspectLogger());
|
||||||
|
|
||||||
await app.listen(3000);
|
await app.listen(3000);
|
||||||
}
|
}
|
||||||
bootstrap();
|
bootstrap();
|
||||||
|
|||||||
Reference in New Issue
Block a user