From 087d1b876127052d8e1a8ee372c7764fdb2f31e6 Mon Sep 17 00:00:00 2001 From: Wilmar den Ouden Date: Fri, 13 Dec 2019 19:09:18 +0100 Subject: [PATCH] fix: avoid creating the log/ directory when file not enabled (#2516) Signed-off-by: wilmardo --- lib/util/logger.js | 49 +++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/lib/util/logger.js b/lib/util/logger.js index 27a1817a4..ca3247df1 100644 --- a/lib/util/logger.js +++ b/lib/util/logger.js @@ -32,9 +32,26 @@ const levelWithCompensatedLength = { /* istanbul ignore next */ const timestampFormat = () => moment().format(settings.get().advanced.timestamp_format); -// Create logger -const transports = { - file: new winston.transports.File({ +// Setup default console logger +const transportsToUse = [ + new winston.transports.Console({ + level, + silent: !output.includes('console'), + format: winston.format.combine( + winston.format.timestamp({format: timestampFormat}), + winston.format.printf(/* istanbul ignore next */(info) => { + const {timestamp, level, message} = info; + const prefix = colorizer.colorize(level, `zigbee2mqtt:${levelWithCompensatedLength[level]}`); + return `${prefix} ${timestamp.split('.')[0]}: ${message}`; + }), + ), + }), +]; + +// Add file logger when enabled +// NOTE: the initiation of the logger, even when not added as transport tries to create the logging directory +if (output.includes('file')) { + transportsToUse.push(new winston.transports.File({ filename: path.join(directory, 'log.txt'), json: false, level, @@ -47,27 +64,10 @@ const transports = { return `${levelWithCompensatedLength[level]} ${timestamp.split('.')[0]}: ${message}`; }), ), - }), - console: new winston.transports.Console({ - level, - silent: !output.includes('console'), - format: winston.format.combine( - winston.format.timestamp({format: timestampFormat}), - winston.format.printf(/* istanbul ignore next */(info) => { - const {timestamp, level, message} = info; - const prefix = colorizer.colorize(level, `zigbee2mqtt:${levelWithCompensatedLength[level]}`); - return `${prefix} ${timestamp.split('.')[0]}: ${message}`; - }), - ), - }), -}; - -// Create logger without transports -const transportsToUse = [transports.console]; -if (output.includes('file')) { - transportsToUse.push(transports.file); + })); } +// Create logger const logger = winston.createLogger({transports: transportsToUse}); // Cleanup any old log directory. @@ -90,10 +90,9 @@ function cleanup() { } logger.cleanup = cleanup; -logger.getLevel = () => transports.console.level; +logger.getLevel = () => transportsToUse[0].level; logger.setLevel = (level) => { - transports.console.level = level; - transports.file.level = level; + transportsToUse.forEach((transport) => transport.level = level); }; // Print to user what logging is enabled