From d1a1035e437051e6f82a69251befd2a1b4b407d2 Mon Sep 17 00:00:00 2001 From: Koen Kanters Date: Mon, 18 Jan 2021 18:31:47 +0100 Subject: [PATCH] Fix nothing logged when log_level set to warn. https://github.com/Koenkk/zigbee2mqtt/issues/5812 --- lib/util/logger.js | 13 +++++++++---- test/logger.test.js | 8 ++++++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/lib/util/logger.js b/lib/util/logger.js index 9cac868d0..839fa4d8a 100644 --- a/lib/util/logger.js +++ b/lib/util/logger.js @@ -21,10 +21,14 @@ if (output.includes('file')) { fx.mkdirSync(directory); } +const z2mToWinstonLevel = (level) => level === 'warn' ? 'warning' : level; +const winstonToZ2mLevel = (level) => level === 'warning' ? 'warn' : level; + // Determine the log level. -const level = settings.get().advanced.log_level; +let level = settings.get().advanced.log_level; const validLevels = ['info', 'error', 'warn', 'debug']; assert(validLevels.includes(level), `'${level}' is not a valid log_level, use one of '${validLevels.join(', ')}'`); +level = z2mToWinstonLevel(level); const levelWithCompensatedLength = { 'info': 'info ', @@ -45,7 +49,7 @@ const transportsToUse = [ winston.format.timestamp({format: timestampFormat}), winston.format.printf(/* istanbul ignore next */(info) => { let {timestamp, level, message} = info; - level = level === 'warning' ? 'warn' : level; + level = winstonToZ2mLevel(level); const prefix = colorizer.colorize(level, `Zigbee2MQTT:${levelWithCompensatedLength[level]}`); return `${prefix} ${timestamp.split('.')[0]}: ${message}`; }), @@ -63,7 +67,7 @@ const transportFileOptions = { winston.format.timestamp({format: timestampFormat}), winston.format.printf(/* istanbul ignore next */(info) => { let {timestamp, level, message} = info; - level = level === 'warning' ? 'warn' : level; + level = winstonToZ2mLevel(level); return `${levelWithCompensatedLength[level]} ${timestamp.split('.')[0]}: ${message}`; }), ), @@ -131,8 +135,9 @@ function logOutput() { logger.cleanup = cleanup; logger.logOutput = logOutput; -logger.getLevel = () => transportsToUse[0].level; +logger.getLevel = () => winstonToZ2mLevel(transportsToUse[0].level); logger.setLevel = (level) => { + level = z2mToWinstonLevel(level); logger.transports.forEach((transport) => transport.level = level); }; diff --git a/test/logger.test.js b/test/logger.test.js index 6ef931241..0b63055f7 100644 --- a/test/logger.test.js +++ b/test/logger.test.js @@ -66,6 +66,14 @@ describe('Logger', () => { expect(logger.getLevel()).toBe('debug'); }); + it('Set and get log level warn <-> warning', () => { + const logger = require('../lib/util/logger.js'); + logger.logOutput(); + logger.setLevel('warn'); + expect(logger.transports[0].level).toBe('warning'); + expect(logger.getLevel()).toBe('warn'); + }); + it('Logger should be console and file by default', () => { const logger = require('../lib/util/logger.js'); logger.logOutput();