mirror of
https://github.com/CommunitySolidServer/CommunitySolidServer.git
synced 2024-10-03 14:55:10 +00:00
feat: add void logger
This commit is contained in:
parent
1e255ca2e4
commit
b0671031f1
13
src/logging/VoidLogger.ts
Normal file
13
src/logging/VoidLogger.ts
Normal 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;
|
||||
}
|
||||
}
|
15
src/logging/VoidLoggerFactory.ts
Normal file
15
src/logging/VoidLoggerFactory.ts
Normal 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;
|
||||
}
|
||||
}
|
12
test/unit/logging/VoidLogger.test.ts
Normal file
12
test/unit/logging/VoidLogger.test.ts
Normal 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);
|
||||
});
|
||||
});
|
14
test/unit/logging/VoidLoggerFactory.test.ts
Normal file
14
test/unit/logging/VoidLoggerFactory.test.ts
Normal 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);
|
||||
});
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user