Skip to content

Commit aa89e8c

Browse files
authored
Merge pull request ekino#44 from pebie/patch-force-write
fix(force): prevent syncLogger reset canForceWrite
2 parents d6a7dad + e8546f1 commit aa89e8c

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed

src/definitions.ts

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export interface Logger {
2323
warn: LogMethod
2424
error: LogMethod
2525
isLevelEnabled(level: string): boolean | undefined
26+
canForceWrite?: boolean
2627
}
2728

2829
export interface OutputAdapter {

src/index.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ export const syncLogger = (logger: Logger, namespace: string, canForceWrite?: bo
280280

281281
logger.isLevelEnabled = (level) => enabledLevels[level]
282282
}
283-
283+
logger.canForceWrite = canForceWrite
284284
return logger
285285
}
286286

@@ -290,7 +290,7 @@ export const syncLogger = (logger: Logger, namespace: string, canForceWrite?: bo
290290
*/
291291
export const syncLoggers = () => {
292292
for (const [namespace, logger] of Object.entries(internals.loggers)) {
293-
syncLogger(logger, namespace)
293+
syncLogger(logger, namespace, logger.canForceWrite)
294294
}
295295
}
296296

test/logger.js

+13
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,19 @@ test('A logger instance should log if instance can forceWrite and forceLogging i
8484
logger.write.restore()
8585
})
8686

87+
test('setLevel and setNamespace should not reset canForceWrite', (t) => {
88+
const log = logger.createLogger('test', true)
89+
logger.setNamespaces('*')
90+
logger.setLevel('info')
91+
const spy = sinon.spy(logger, 'write')
92+
93+
log.debug(null, {}, true)
94+
95+
t.is(spy.callCount, 1)
96+
97+
logger.write.restore()
98+
})
99+
87100
test("A logger instance shouldn't log if namespace is not enabled", (t) => {
88101
logger.setNamespaces('test:*')
89102

0 commit comments

Comments
 (0)