feat: add void logger

This commit is contained in:
Ruben Taelman 2020-09-22 11:28:05 +02:00 committed by Ruben Taelman
parent 1e255ca2e4
commit b0671031f1
4 changed files with 54 additions and 0 deletions

13
src/logging/VoidLogger.ts Normal file
View File

@ -0,0 +1,13 @@
import type { Logger } from './Logger';
import type { LogLevel } from './LogLevel';
/**
* A logger that does nothing on a log message.
*/
export class VoidLogger implements Logger {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public log(level: LogLevel, message: string, meta?: any): Logger {
// Do nothing
return this;
}
}

View File

@ -0,0 +1,15 @@
import type { Logger } from './Logger';
import type { LoggerFactory } from './LoggerFactory';
import { VoidLogger } from './VoidLogger';
/**
* A factory that always returns {@link VoidLogger}, which does nothing on log messages.
*/
export class VoidLoggerFactory implements LoggerFactory {
private readonly logger = new VoidLogger();
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public createLogger(label: string): Logger {
return this.logger;
}
}

View File

@ -0,0 +1,12 @@
import { VoidLogger } from '../../../src/logging/VoidLogger';
describe('VoidLogger', (): void => {
let logger: VoidLogger;
beforeEach(async(): Promise<void> => {
logger = new VoidLogger();
});
it('does nothing when log is invoked.', async(): Promise<void> => {
expect(logger.log('debug', 'my message', { abc: true })).toBe(logger);
});
});

View File

@ -0,0 +1,14 @@
import { VoidLogger } from '../../../src/logging/VoidLogger';
import { VoidLoggerFactory } from '../../../src/logging/VoidLoggerFactory';
describe('VoidLoggerFactory', (): void => {
let factory: VoidLoggerFactory;
beforeEach(async(): Promise<void> => {
factory = new VoidLoggerFactory();
});
it('creates VoidLoggers.', async(): Promise<void> => {
const logger = factory.createLogger('MyLabel');
expect(logger).toBeInstanceOf(VoidLogger);
});
});