diff --git a/lib/logger.js b/lib/logger.js index f52da4bd..c899dd33 100644 --- a/lib/logger.js +++ b/lib/logger.js @@ -80,19 +80,17 @@ class Logger { } log(level, ...args) { - let logLevel = levels.getLevel(level); + const logLevel = levels.getLevel(level); if (!logLevel) { - // allow LOG to be synonym of INFO - if ((level && level.trim().indexOf(" ") !== -1) || args.length === 0) { - args = [level, ...args]; + if (configuration.validIdentifier(level) && args.length > 0) { + // logLevel not found but of valid signature, WARN before fallback to INFO + this.log(levels.WARN, 'log4js:logger.log: valid log-level not found as first parameter given:', level); + this.log(levels.INFO, `[${level}]`, ...args); } else { - this._log(levels.WARN, ['log4js:logger.log: invalid value for log-level as first parameter given:', level]); - args = [`[${level}]`, ...args]; + // apart from fallback, allow .log(...args) to be synonym with .log("INFO", ...args) + this.log(levels.INFO, level, ...args); } - // fallback to INFO - logLevel = levels.INFO; - } - if (this.isLevelEnabled(logLevel)) { + } else if (this.isLevelEnabled(logLevel)) { this._log(logLevel, args); } } diff --git a/test/tap/newLevel-test.js b/test/tap/newLevel-test.js index d89f1066..ffae2bc0 100644 --- a/test/tap/newLevel-test.js +++ b/test/tap/newLevel-test.js @@ -243,14 +243,14 @@ test("../../lib/logger", batch => { const events = recording.replay(); t.equal(events[0].level.toString(), "WARN", "should log warning"); - t.equal(events[0].data[0], "log4js:logger.log: invalid value for log-level as first parameter given:"); + t.equal(events[0].data[0], "log4js:logger.log: valid log-level not found as first parameter given:"); t.equal(events[0].data[1], "LEVEL_DOES_NOT_EXIST"); t.equal(events[1].level.toString(), "INFO", "should fall back to INFO"); t.equal(events[1].data[0], "[LEVEL_DOES_NOT_EXIST]"); t.equal(events[1].data[1], "Event 1"); t.equal(events[2].level.toString(), "WARN", "should log warning"); - t.equal(events[2].data[0], "log4js:logger.log: invalid value for log-level as first parameter given:"); + t.equal(events[2].data[0], "log4js:logger.log: valid log-level not found as first parameter given:"); t.equal(events[2].data[1], undefined); t.equal(events[3].level.toString(), "INFO", "should fall back to INFO"); t.equal(events[3].data[0], "[undefined]");