fix: avoid creating the log/ directory when file not enabled (#2516)

Signed-off-by: wilmardo <info@wilmardenouden.nl>
This commit is contained in:
Wilmar den Ouden
2019-12-13 19:09:18 +01:00
committed by Koen Kanters
parent 4334e01759
commit 087d1b8761
+24 -25
View File
@@ -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