From 4e7001b8c8ccd043fff8ccd9691f48a700e69c67 Mon Sep 17 00:00:00 2001 From: Camila Belo Date: Thu, 21 Nov 2024 15:06:29 +0100 Subject: [PATCH] refactor: apply second review suggestions Signed-off-by: Camila Belo --- .../http/MiddlewareFactory.test.ts | 11 +++++------ .../rootHttpRouter/http/MiddlewareFactory.ts | 18 ++++++++++-------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/packages/backend-defaults/src/entrypoints/rootHttpRouter/http/MiddlewareFactory.test.ts b/packages/backend-defaults/src/entrypoints/rootHttpRouter/http/MiddlewareFactory.test.ts index 9bc5d53960..cd9101bae4 100644 --- a/packages/backend-defaults/src/entrypoints/rootHttpRouter/http/MiddlewareFactory.test.ts +++ b/packages/backend-defaults/src/entrypoints/rootHttpRouter/http/MiddlewareFactory.test.ts @@ -29,8 +29,7 @@ import request from 'supertest'; import { MiddlewareFactory } from './MiddlewareFactory'; import { mockServices } from '@backstage/backend-test-utils'; -jest.useFakeTimers(); -jest.setSystemTime(new Date('2024-11-20T00:00:00Z')); +jest.useFakeTimers({ now: new Date('2024-11-20T00:00:00Z') }); describe('MiddlewareFactory', () => { describe('middleware.error', () => { @@ -256,10 +255,10 @@ describe('MiddlewareFactory', () => { ), { type: 'incomingRequest', - date: '20/Nov/2024:00:00:00 +0000', + date: 'Wed, 20 Nov 2024 00:00:00 GMT', method: 'GET', url: '/', - status: '200', + status: 200, httpVersion: '1.1', contentLength: '11', }, @@ -283,10 +282,10 @@ describe('MiddlewareFactory', () => { ), { type: 'incomingRequest', - date: '20/Nov/2024:00:00:00 +0000', + date: 'Wed, 20 Nov 2024 00:00:00 GMT', method: 'GET', url: '/', - status: '200', + status: 200, httpVersion: '1.1', userAgent: 'test-agent', referrer: 'test-referrer', diff --git a/packages/backend-defaults/src/entrypoints/rootHttpRouter/http/MiddlewareFactory.ts b/packages/backend-defaults/src/entrypoints/rootHttpRouter/http/MiddlewareFactory.ts index 6376cc0cff..55ca9e158a 100644 --- a/packages/backend-defaults/src/entrypoints/rootHttpRouter/http/MiddlewareFactory.ts +++ b/packages/backend-defaults/src/entrypoints/rootHttpRouter/http/MiddlewareFactory.ts @@ -55,12 +55,13 @@ function getLogMeta( req: IncomingMessage, res: ServerResponse, ) { + const status = Number(tokens.status(req, res)); return { - date: tokens.date(req, res, 'clf'), + date: tokens.date(req, res, 'web'), method: tokens.method(req, res), url: tokens.url(req, res), httpVersion: tokens['http-version'](req, res), - status: tokens.status(req, res), + status: isNaN(status) ? undefined : status, contentLength: tokens.res(req, res, 'content-length'), referrer: tokens.referrer(req, res), userAgent: tokens.req(req, res, 'user-agent'), @@ -160,19 +161,20 @@ export class MiddlewareFactory { */ logging(): RequestHandler { const logger = this.#logger; - let meta: Record = {}; return morgan( (tokens: TokenIndexer, req: IncomingMessage, res: ServerResponse) => { - meta = getLogMeta(tokens, req, res); - return getLogMessage(tokens, req, res); + const meta = getLogMeta(tokens, req, res); + const message = getLogMessage(tokens, req, res); + return JSON.stringify({ meta, message }); }, { stream: { - write(message: string) { + write(json: string) { + const { meta, message } = JSON.parse(json); logger.info(message.trimEnd(), { type: 'incomingRequest', - ...Object.entries(meta).reduce((reduced, [key, value]) => { - return value ? { ...reduced, [key]: value } : reduced; + ...Object.entries(meta).reduce((rest, [key, value]) => { + return value ? { ...rest, [key]: value } : rest; }, {}), }); },