Skip to content

Commit 84bbd35

Browse files
authored
fix: Ensure silent log level is respected with browser.transmit option (#2052)
1 parent 5bc0a92 commit 84bbd35

File tree

2 files changed

+52
-4
lines changed

2 files changed

+52
-4
lines changed

browser.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -280,8 +280,8 @@ function set (self, opts, rootLogger, level) {
280280
if (!opts.transmit) return
281281

282282
const transmitLevel = opts.transmit.level || self.level
283-
const transmitValue = rootLogger.levels.values[transmitLevel]
284-
const methodValue = rootLogger.levels.values[level]
283+
const transmitValue = levelToValue(transmitLevel, rootLogger)
284+
const methodValue = levelToValue(level, rootLogger)
285285
if (methodValue < transmitValue) return
286286
}
287287

@@ -322,8 +322,8 @@ function createWrap (self, opts, rootLogger, level) {
322322

323323
if (opts.transmit) {
324324
const transmitLevel = opts.transmit.level || self._level
325-
const transmitValue = rootLogger.levels.values[transmitLevel]
326-
const methodValue = rootLogger.levels.values[level]
325+
const transmitValue = levelToValue(transmitLevel, rootLogger)
326+
const methodValue = levelToValue(level, rootLogger)
327327
if (methodValue < transmitValue) return
328328
transmit(this, {
329329
ts,

test/browser-transmit.test.js

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,3 +367,51 @@ test('does not log below configured level', ({ end, is }) => {
367367

368368
end()
369369
})
370+
371+
test('silent level prevents logging even with transmit', ({ end, fail }) => {
372+
const logger = pino({
373+
level: 'silent',
374+
browser: {
375+
write () {
376+
fail('no data should be logged by the write method')
377+
},
378+
transmit: {
379+
send () {
380+
fail('no data should be logged by the send method')
381+
}
382+
}
383+
}
384+
})
385+
386+
Object.keys(pino.levels.values).forEach((level) => {
387+
logger[level]('ignored')
388+
})
389+
390+
end()
391+
})
392+
393+
test('does not call send when transmit.level is set to silent', ({ end, fail, is }) => {
394+
let c = 0
395+
const logger = pino({
396+
level: 'trace',
397+
browser: {
398+
write () {
399+
c++
400+
},
401+
transmit: {
402+
level: 'silent',
403+
send () {
404+
fail('no data should be logged by the transmit method')
405+
}
406+
}
407+
}
408+
})
409+
410+
const levels = Object.keys(pino.levels.values)
411+
levels.forEach((level) => {
412+
logger[level]('message')
413+
})
414+
415+
is(c, levels.length, 'write must be called exactly once per level')
416+
end()
417+
})

0 commit comments

Comments
 (0)