Skip to content

Commit 991eed0

Browse files
committed
[ADD] Logger middleware
1 parent f8df488 commit 991eed0

File tree

3 files changed

+31
-4
lines changed

3 files changed

+31
-4
lines changed

src/app.module.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
1-
import { Module } from '@nestjs/common';
1+
import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
22
import { AppController } from './app.controller';
33
import { AppService } from './app.service';
44
import { MinecraftModule } from './minecraft/minecraft.module';
55
import { SourceModule } from './source/source.module';
66
import { FivemModule } from './fivem/fivem.module';
7+
import { LoggerMiddleware } from 'src/middleware/logger.middleware';
78

89
@Module({
910
imports: [MinecraftModule, SourceModule, FivemModule],
1011
controllers: [AppController],
1112
providers: [AppService],
1213
})
13-
export class AppModule {}
14+
export class AppModule implements NestModule {
15+
configure(consumer: MiddlewareConsumer) {
16+
consumer
17+
.apply(LoggerMiddleware)
18+
.forRoutes('*');
19+
}
20+
}

src/main.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import { NestFactory } from '@nestjs/core';
22
import { AppModule } from './app.module';
33
import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';
4-
import { ValidationPipe } from '@nestjs/common';
4+
import { Logger, ValidationPipe } from '@nestjs/common';
55

66
async function bootstrap() {
7+
const port: number | string = process.env.PORT || 3000;
78
const app = await NestFactory.create(AppModule);
89
const swaggerConfig = new DocumentBuilder()
910
.setTitle("Game Server Tracker - API")
@@ -16,6 +17,7 @@ async function bootstrap() {
1617
SwaggerModule.setup('api-docs', app, swaggerDocument);
1718
app.useGlobalPipes(new ValidationPipe({ disableErrorMessages: false, whitelist: true }))
1819
app.enableCors();
19-
await app.listen(process.env.PORT || 3000);
20+
await app.listen(port);
21+
Logger.log(`GST Lametric API is running. Listening on port ${port}`, "Bootstrap");
2022
}
2123
bootstrap();

src/middleware/logger.middleware.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { Injectable, Logger, NestMiddleware } from "@nestjs/common";
2+
import { Request, Response, NextFunction } from 'express';
3+
4+
@Injectable()
5+
export class LoggerMiddleware implements NestMiddleware {
6+
private logger: Logger = new Logger('HTTP');
7+
use(req: Request, res: Response, next: NextFunction) {
8+
res.on("finish", () => {
9+
if (res.statusCode >= 500)
10+
this.logger.error(`HTTP request ${req.method} ${req.url} ${res.statusCode} ${res.statusMessage}`);
11+
else if (res.statusCode >= 400)
12+
this.logger.warn(`HTTP request ${req.method} ${req.url} ${res.statusCode} ${res.statusMessage}`);
13+
else
14+
this.logger.log(`HTTP request ${req.method} ${req.url} ${res.statusCode}`);
15+
});
16+
next();
17+
}
18+
}

0 commit comments

Comments
 (0)