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 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('')
|
||||
|
||||
@ -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]
|
||||
|
||||
@ -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 = {
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -2,6 +2,6 @@ import { Message } from '../Message'
|
||||
import { LogLevel } from '../LogLevel'
|
||||
|
||||
export interface Transport {
|
||||
readonly level: LogLevel
|
||||
level: LogLevel
|
||||
write(message: Message): void
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user