From 3a1f697d93643bf99f7f099fa25d3c557bedeeb4 Mon Sep 17 00:00:00 2001 From: Koen Kanters Date: Wed, 7 Oct 2020 17:15:46 +0200 Subject: [PATCH] Don't log when including logger.js --- lib/controller.js | 1 + lib/util/logger.js | 27 +++++++++++++++------------ test/logger.test.js | 9 +++++++++ test/stub/logger.js | 1 + 4 files changed, 26 insertions(+), 12 deletions(-) diff --git a/lib/controller.js b/lib/controller.js index 432e0ba1..1e1d515d 100644 --- a/lib/controller.js +++ b/lib/controller.js @@ -104,6 +104,7 @@ class Controller { async start() { this.state.start(); + logger.logOutput(); const info = await utils.getZigbee2mqttVersion(); logger.info(`Starting Zigbee2MQTT version ${info.version} (commit #${info.commitHash})`); diff --git a/lib/util/logger.js b/lib/util/logger.js index 3e0edd2b..0c590b9f 100644 --- a/lib/util/logger.js +++ b/lib/util/logger.js @@ -115,24 +115,27 @@ function cleanup() { } } +// Print to user what logging is enabled +function logOutput() { + if (output.includes('file')) { + if (output.includes('console')) { + logger.info(`Logging to console and directory: '${directory}' filename: ${logFilename}`); + } else { + logger.info(`Logging to directory: '${directory}' filename: ${logFilename}`); + } + logger.cleanup(); + } else if (output.includes('console')) { + logger.info(`Logging to console only'`); + } +} + logger.cleanup = cleanup; +logger.logOutput = logOutput; logger.getLevel = () => transportsToUse[0].level; logger.setLevel = (level) => { transportsToUse.forEach((transport) => transport.level = level); }; -// Print to user what logging is enabled -if (output.includes('file')) { - if (output.includes('console')) { - logger.info(`Logging to console and directory: '${directory}' filename: ${logFilename}`); - } else { - logger.info(`Logging to directory: '${directory}' filename: ${logFilename}`); - } - logger.cleanup(); -} else if (output.includes('console')) { - logger.info(`Logging to console only'`); -} - // winston.config.syslog.levels doesnt have warn, but is required for syslog. /* istanbul ignore next */ logger.warn = (message) => logger.warning(message); diff --git a/test/logger.test.js b/test/logger.test.js index 03f64e39..6ef93124 100644 --- a/test/logger.test.js +++ b/test/logger.test.js @@ -24,12 +24,14 @@ describe('Logger', () => { it('Create log directory', () => { const logger = require('../lib/util/logger.js'); + logger.logOutput(); const dirs = fs.readdirSync(dir.name); expect(dirs.length).toBe(1); }); it('Should cleanup', () => { const logger = require('../lib/util/logger.js'); + logger.logOutput(); for (const d of fs.readdirSync(dir.name)) { rimraf.sync(path.join(dir.name, d)); @@ -46,6 +48,7 @@ describe('Logger', () => { it('Should not cleanup when there is no timestamp set', () => { const logger = require('../lib/util/logger.js'); + logger.logOutput(); for (let i = 30; i < 40; i++) { fs.mkdirSync(path.join(dir.name, `log_${i}`)); } @@ -58,12 +61,14 @@ describe('Logger', () => { it('Set and get log level', () => { const logger = require('../lib/util/logger.js'); + logger.logOutput(); logger.setLevel('debug'); expect(logger.getLevel()).toBe('debug'); }); it('Logger should be console and file by default', () => { const logger = require('../lib/util/logger.js'); + logger.logOutput(); const pipes = logger._readableState.pipes; expect(pipes.length).toBe(2); expect(pipes[0].constructor.name).toBe('Console'); @@ -75,6 +80,7 @@ describe('Logger', () => { it('Logger can be file only', () => { settings.set(['advanced', 'log_output'], ['file']); const logger = require('../lib/util/logger.js'); + logger.logOutput(); const pipes = logger._readableState.pipes; expect(pipes.length).toBe(2); expect(pipes[0].constructor.name).toBe('Console'); @@ -86,6 +92,7 @@ describe('Logger', () => { it('Logger can be console only', () => { settings.set(['advanced', 'log_output'], ['console']); const logger = require('../lib/util/logger.js'); + logger.logOutput(); const pipes = logger._readableState.pipes; expect(pipes.constructor.name).toBe('Console'); expect(pipes.silent).toBe(false); @@ -94,6 +101,7 @@ describe('Logger', () => { it('Logger can be nothing', () => { settings.set(['advanced', 'log_output'], []); const logger = require('../lib/util/logger.js'); + logger.logOutput(); const pipes = logger._readableState.pipes; expect(pipes.constructor.name).toBe('Console'); expect(pipes.silent).toBe(true); @@ -102,6 +110,7 @@ describe('Logger', () => { it('Should allow to disable log rotation', () => { settings.set(['advanced', 'log_rotation'], false); const logger = require('../lib/util/logger.js'); + logger.logOutput(); const pipes = logger._readableState.pipes; expect(pipes[1].constructor.name).toBe('File'); expect(pipes[1].maxFiles).toBeNull(); diff --git a/test/stub/logger.js b/test/stub/logger.js index f1fd9760..82e92b54 100644 --- a/test/stub/logger.js +++ b/test/stub/logger.js @@ -17,6 +17,7 @@ const mock = { error: jest.fn().mockImplementation((msg) => callTransports('error', msg)), debug: jest.fn().mockImplementation((msg) => callTransports('debug', msg)), cleanup: jest.fn(), + logOutput: jest.fn(), add: (transport) => transports.push(transport), setLevel: (newLevel) => {level = newLevel}, getLevel: () => level,