fix: logging component logs as coming from a worker

This commit is contained in:
Thomas Dupont 2022-05-18 13:22:10 +02:00 committed by Joachim Van Herwegen
parent 069b123c67
commit c89cc4b395
3 changed files with 10 additions and 7 deletions

View File

@ -1,3 +1,4 @@
import cluster from 'cluster';
import { WrappingLogger } from './Logger'; import { WrappingLogger } from './Logger';
import type { Logger } from './Logger'; import type { Logger } from './Logger';
import type { LoggerFactory } from './LoggerFactory'; import type { LoggerFactory } from './LoggerFactory';
@ -51,7 +52,7 @@ class TemporaryLoggerFactory implements LoggerFactory {
} }
// Emit all buffered log messages // Emit all buffered log messages
for (const { logger, level, message } of this.buffer.splice(0, this.buffer.length)) { for (const { logger, level, message } of this.buffer.splice(0, this.buffer.length)) {
logger.log(level, message); logger.log(level, message, { isPrimary: cluster.isMaster, pid: process.pid });
} }
} }
} }

View File

@ -38,7 +38,7 @@ export interface Logger extends SimpleLogger {
* @param message - The message to log. * @param message - The message to log.
* @param meta - Optional metadata to include in the log message. * @param meta - Optional metadata to include in the log message.
*/ */
log: (level: LogLevel, message: string) => Logger; log: (level: LogLevel, message: string, meta?: LogMetadata) => Logger;
/** /**
* Log a message at the 'error' level. * Log a message at the 'error' level.

View File

@ -53,13 +53,13 @@ describe('LazyLoggerFactory', (): void => {
const wrappedA = dummyLoggerFactory.createLogger.mock.results[0].value as jest.Mocked<Logger>; const wrappedA = dummyLoggerFactory.createLogger.mock.results[0].value as jest.Mocked<Logger>;
expect(wrappedA.log).toHaveBeenCalledTimes(2); expect(wrappedA.log).toHaveBeenCalledTimes(2);
expect(wrappedA.log).toHaveBeenNthCalledWith(1, 'warn', 'message1', undefined); expect(wrappedA.log).toHaveBeenNthCalledWith(1, 'warn', 'message1', expect.any(Object));
expect(wrappedA.log).toHaveBeenNthCalledWith(2, 'error', 'message4', undefined); expect(wrappedA.log).toHaveBeenNthCalledWith(2, 'error', 'message4', expect.any(Object));
const wrappedB = dummyLoggerFactory.createLogger.mock.results[1].value as jest.Mocked<Logger>; const wrappedB = dummyLoggerFactory.createLogger.mock.results[1].value as jest.Mocked<Logger>;
expect(wrappedB.log).toHaveBeenCalledTimes(2); expect(wrappedB.log).toHaveBeenCalledTimes(2);
expect(wrappedB.log).toHaveBeenNthCalledWith(1, 'warn', 'message2', undefined); expect(wrappedB.log).toHaveBeenNthCalledWith(1, 'warn', 'message2', expect.any(Object));
expect(wrappedB.log).toHaveBeenNthCalledWith(2, 'error', 'message3', undefined); expect(wrappedB.log).toHaveBeenNthCalledWith(2, 'error', 'message3', expect.any(Object));
}); });
it('does not store more messages than the buffer limit.', (): void => { it('does not store more messages than the buffer limit.', (): void => {
@ -84,6 +84,8 @@ describe('LazyLoggerFactory', (): void => {
expect(wrappedA.log).toHaveBeenCalledTimes(50); expect(wrappedA.log).toHaveBeenCalledTimes(50);
expect(wrappedB.log).toHaveBeenCalledTimes(49); expect(wrappedB.log).toHaveBeenCalledTimes(49);
expect(warningLogger.log).toHaveBeenCalledTimes(1); expect(warningLogger.log).toHaveBeenCalledTimes(1);
expect(warningLogger.log).toHaveBeenCalledWith('warn', 'Memory-buffered logging limit of 100 reached', undefined); expect(warningLogger.log).toHaveBeenCalledWith(
'warn', 'Memory-buffered logging limit of 100 reached', expect.any(Object),
);
}); });
}); });