From c67de5eb2895d29ca8a7d5ce83cca6dbdb9f4858 Mon Sep 17 00:00:00 2001 From: Koen Kanters Date: Tue, 19 Jan 2021 18:14:40 +0100 Subject: [PATCH] Fix nothing logged in frontend when log_level warn is set. https://github.com/Koenkk/zigbee2mqtt/issues/5812 --- lib/extension/bridge.js | 2 +- lib/util/logger.js | 4 ++++ test/logger.test.js | 13 +++++++++++++ test/stub/logger.js | 1 + 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/extension/bridge.js b/lib/extension/bridge.js index 535a63ed..ece1a5e8 100644 --- a/lib/extension/bridge.js +++ b/lib/extension/bridge.js @@ -68,7 +68,7 @@ class Bridge extends Extension { } } - logger.add(new EventTransport({level: logger.getLevel()})); + logger.addTransport(new EventTransport()); } permitJoinChanged(data) { diff --git a/lib/util/logger.js b/lib/util/logger.js index 839fa4d8..b231e39f 100644 --- a/lib/util/logger.js +++ b/lib/util/logger.js @@ -133,6 +133,10 @@ function logOutput() { } } +logger.addTransport = (transport) => { + transport.level = transportsToUse[0].level; + logger.add(transport); +}; logger.cleanup = cleanup; logger.logOutput = logOutput; logger.getLevel = () => winstonToZ2mLevel(transportsToUse[0].level); diff --git a/test/logger.test.js b/test/logger.test.js index 0b63055f..f9d708a5 100644 --- a/test/logger.test.js +++ b/test/logger.test.js @@ -6,6 +6,7 @@ const path = require('path'); const data = require('./stub/data'); let stdOutWriteOriginal; const rimraf = require('rimraf'); +const Transport = require('winston-transport'); describe('Logger', () => { beforeEach(async () => { @@ -66,6 +67,18 @@ describe('Logger', () => { expect(logger.getLevel()).toBe('debug'); }); + it('Add transport', () => { + class DummyTransport extends Transport { + log(info, callback) { + } + } + + const logger = require('../lib/util/logger.js'); + expect(logger.transports.length).toBe(2); + logger.addTransport(new DummyTransport()); + expect(logger.transports.length).toBe(3); + }); + it('Set and get log level warn <-> warning', () => { const logger = require('../lib/util/logger.js'); logger.logOutput(); diff --git a/test/stub/logger.js b/test/stub/logger.js index 82e92b54..5a8db036 100644 --- a/test/stub/logger.js +++ b/test/stub/logger.js @@ -19,6 +19,7 @@ const mock = { cleanup: jest.fn(), logOutput: jest.fn(), add: (transport) => transports.push(transport), + addTransport: (transport) => transports.push(transport), setLevel: (newLevel) => {level = newLevel}, getLevel: () => level, setTransportsEnabled: (value) => {transportsEnabled = value},