diff --git a/src/main.ts b/src/main.ts index 511551f..1bcf0cb 100644 --- a/src/main.ts +++ b/src/main.ts @@ -2,10 +2,12 @@ import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; import serveStatic from 'serve-static'; import { Response } from 'express'; +import { logger } from './middleware/logger.middleware'; async function bootstrap() { const app = await NestFactory.create(AppModule); app.enableCors(); + app.use(logger); await app.listen(3000); } diff --git a/src/middleware/logger.middleware.ts b/src/middleware/logger.middleware.ts new file mode 100644 index 0000000..b5fea40 --- /dev/null +++ b/src/middleware/logger.middleware.ts @@ -0,0 +1,26 @@ +import { Response, Request } from 'express'; + +const NS_PER_SEC = 1e9; +export async function logger(req: Request, res: Response, next) { + const time = process.hrtime(); + next(); + res.once('finish', () => { + const diff = process.hrtime(time); + console.log( + `[${req.headers['x-forwarded-for'] || + req.connection.remoteAddress || + req.socket.remoteAddress || + req.connection.remoteAddress}][${(diff[0] * NS_PER_SEC + diff[1]) / + 1000000}]`, + decodeURI_catch(req.url), + ); + }); +} + +function decodeURI_catch(url: string) { + try { + return decodeURI(url); + } catch (error) { + return url; + } +}