refactor: apply second review suggestions

Signed-off-by: Camila Belo <camilaibs@gmail.com>
This commit is contained in:
Camila Belo
2024-11-21 15:06:29 +01:00
parent 7fc368041a
commit 4e7001b8c8
2 changed files with 15 additions and 14 deletions
@@ -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',
@@ -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<string, string | undefined> = {};
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;
}, {}),
});
},