Add ability to set LogLevel post logger creation

This commit is contained in:
Jerko Steiner 2019-11-01 14:27:08 -04:00
parent 3b7dcd9cb7
commit 2e06a40006
5 changed files with 30 additions and 6 deletions

View File

@ -1,15 +1,17 @@
import stdMocks from 'std-mocks'
import loggerFactory from './'
import { SimpleLoggerFactory } from './SimpleLoggerFactory'
import { LogLevel } from './LogLevel'
describe('SimpleLoggerFactory', () => {
let getLogger: typeof SimpleLoggerFactory.prototype.getLogger
let factory: SimpleLoggerFactory
beforeEach(() => {
getLogger = SimpleLoggerFactory.init({
factory = SimpleLoggerFactory.init({
logs: 'test1:verbose,-test3,t4,logtest5',
})
.getLogger
getLogger = factory.getLogger
stdMocks.use()
@ -66,6 +68,20 @@ describe('SimpleLoggerFactory', () => {
]])
})
it('can set logger level', () => {
loggerFactory.setLoggerLevel('log-level-test', LogLevel.INFO)
const logger = loggerFactory.getLogger('log-level-test')
logger.info('test1')
expect((global.console.log as any).mock.calls).toEqual([[
'log-level-test INFO test1',
]])
loggerFactory.setLoggerLevel('log-level-test', LogLevel.OFF)
logger.info('test2')
expect((global.console.log as any).mock.calls).toEqual([[
'log-level-test INFO test1',
]])
})
describe('getCorrelationId', () => {
it('returns an empty string by default', () => {
expect(loggerFactory.getCorrelationId()).toBe('')

View File

@ -10,7 +10,7 @@ import { ConsoleTransport } from './transports'
// and disable all sql logs.
export interface EnabledLoggers {
readonly [key: string]: LogLevel
[key: string]: LogLevel
}
export interface LoggerOptions {
@ -49,6 +49,14 @@ export class SimpleLoggerFactory implements LoggerFactory {
return enabledLoggers[name] || this.defaultLogLevel
}
setLoggerLevel(name: string, level: LogLevel) {
this.options.enabledLoggers[name] = level
if (this.loggers[name]) {
const logger = this.loggers[name] as SimpleLogger
logger.config.transports.forEach(t => t.level = level)
}
}
getLogger = (name: string): Logger => {
if (this.loggers[name]) {
return this.loggers[name]

View File

@ -11,7 +11,7 @@ interface LoggerParams {
}
export class SimpleLogger implements Logger {
constructor(protected readonly config: LoggerParams) {}
constructor(readonly config: LoggerParams) {}
protected log(level: LogLevel, message: string, params: unknown[]) {
const initialMessage: Message = {

View File

@ -3,7 +3,7 @@ import { Message } from '../Message'
import { LogLevel } from '../LogLevel'
export class ConsoleTransport implements Transport {
constructor(readonly level: LogLevel) {}
constructor(public level: LogLevel) {}
write(entry: Message) {
if (entry.level <= this.level) {

View File

@ -2,6 +2,6 @@ import { Message } from '../Message'
import { LogLevel } from '../LogLevel'
export interface Transport {
readonly level: LogLevel
level: LogLevel
write(message: Message): void
}