back logging every request

This commit is contained in:
GitBluub
2023-07-26 22:21:21 +09:00
parent dcdc6b196d
commit 96048bd671
4 changed files with 927 additions and 8 deletions

View File

@@ -5,4 +5,4 @@ RUN npm install --frozen-lockfile
COPY . .
RUN npx prisma generate
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

File diff suppressed because it is too large Load Diff

View File

@@ -36,6 +36,7 @@
"bcryptjs": "^2.4.3",
"class-transformer": "^0.5.1",
"class-validator": "^0.13.2",
"json-logger-service": "^9.0.1",
"passport-jwt": "^4.0.0",
"passport-local": "^1.0.0",
"reflect-metadata": "^0.1.13",

View File

@@ -2,10 +2,43 @@ import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { PrismaService } from './prisma/prisma.service';
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() {
const app = await NestFactory.create(AppModule);
app.use(RequestLogger.buildExpressRequestLogger({ doNotLogPaths: ['/health'] } as RequestLoggerOptions));
const prismaService = app.get(PrismaService);
await prismaService.enableShutdownHooks(app);
@@ -19,6 +52,8 @@ async function bootstrap() {
app.useGlobalPipes(new ValidationPipe());
app.enableCors();
app.useGlobalInterceptors(new AspectLogger());
await app.listen(3000);
}
bootstrap();