Add ability to set LogLevel post logger creation
This commit is contained in:
parent
3b7dcd9cb7
commit
2e06a40006
@ -1,15 +1,17 @@
|
|||||||
import stdMocks from 'std-mocks'
|
import stdMocks from 'std-mocks'
|
||||||
import loggerFactory from './'
|
import loggerFactory from './'
|
||||||
import { SimpleLoggerFactory } from './SimpleLoggerFactory'
|
import { SimpleLoggerFactory } from './SimpleLoggerFactory'
|
||||||
|
import { LogLevel } from './LogLevel'
|
||||||
|
|
||||||
describe('SimpleLoggerFactory', () => {
|
describe('SimpleLoggerFactory', () => {
|
||||||
|
|
||||||
let getLogger: typeof SimpleLoggerFactory.prototype.getLogger
|
let getLogger: typeof SimpleLoggerFactory.prototype.getLogger
|
||||||
|
let factory: SimpleLoggerFactory
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
getLogger = SimpleLoggerFactory.init({
|
factory = SimpleLoggerFactory.init({
|
||||||
logs: 'test1:verbose,-test3,t4,logtest5',
|
logs: 'test1:verbose,-test3,t4,logtest5',
|
||||||
})
|
})
|
||||||
.getLogger
|
getLogger = factory.getLogger
|
||||||
|
|
||||||
stdMocks.use()
|
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', () => {
|
describe('getCorrelationId', () => {
|
||||||
it('returns an empty string by default', () => {
|
it('returns an empty string by default', () => {
|
||||||
expect(loggerFactory.getCorrelationId()).toBe('')
|
expect(loggerFactory.getCorrelationId()).toBe('')
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import { ConsoleTransport } from './transports'
|
|||||||
// and disable all sql logs.
|
// and disable all sql logs.
|
||||||
|
|
||||||
export interface EnabledLoggers {
|
export interface EnabledLoggers {
|
||||||
readonly [key: string]: LogLevel
|
[key: string]: LogLevel
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface LoggerOptions {
|
export interface LoggerOptions {
|
||||||
@ -49,6 +49,14 @@ export class SimpleLoggerFactory implements LoggerFactory {
|
|||||||
return enabledLoggers[name] || this.defaultLogLevel
|
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 => {
|
getLogger = (name: string): Logger => {
|
||||||
if (this.loggers[name]) {
|
if (this.loggers[name]) {
|
||||||
return this.loggers[name]
|
return this.loggers[name]
|
||||||
|
|||||||
@ -11,7 +11,7 @@ interface LoggerParams {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export class SimpleLogger implements Logger {
|
export class SimpleLogger implements Logger {
|
||||||
constructor(protected readonly config: LoggerParams) {}
|
constructor(readonly config: LoggerParams) {}
|
||||||
|
|
||||||
protected log(level: LogLevel, message: string, params: unknown[]) {
|
protected log(level: LogLevel, message: string, params: unknown[]) {
|
||||||
const initialMessage: Message = {
|
const initialMessage: Message = {
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { Message } from '../Message'
|
|||||||
import { LogLevel } from '../LogLevel'
|
import { LogLevel } from '../LogLevel'
|
||||||
|
|
||||||
export class ConsoleTransport implements Transport {
|
export class ConsoleTransport implements Transport {
|
||||||
constructor(readonly level: LogLevel) {}
|
constructor(public level: LogLevel) {}
|
||||||
|
|
||||||
write(entry: Message) {
|
write(entry: Message) {
|
||||||
if (entry.level <= this.level) {
|
if (entry.level <= this.level) {
|
||||||
|
|||||||
@ -2,6 +2,6 @@ import { Message } from '../Message'
|
|||||||
import { LogLevel } from '../LogLevel'
|
import { LogLevel } from '../LogLevel'
|
||||||
|
|
||||||
export interface Transport {
|
export interface Transport {
|
||||||
readonly level: LogLevel
|
level: LogLevel
|
||||||
write(message: Message): void
|
write(message: Message): void
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user