diff --git a/lib/layouts.js b/lib/layouts.js index a762e4d0..74254858 100644 --- a/lib/layouts.js +++ b/lib/layouts.js @@ -254,7 +254,7 @@ function patternLayout(pattern, tokens) { // support for ESM as it uses url instead of path for file /* istanbul ignore next: unsure how to simulate ESM for test coverage */ - const convertFileURLToPath = function(filepath) { + const convertFileURLToPath = function (filepath) { const urlPrefix = 'file://'; if (filepath.startsWith(urlPrefix)) { // https://nodejs.org/api/url.html#urlfileurltopathurl diff --git a/lib/logger.js b/lib/logger.js index ca36be5e..1d117656 100644 --- a/lib/logger.js +++ b/lib/logger.js @@ -82,8 +82,9 @@ class Logger { log(level, ...args) { let logLevel = levels.getLevel(level); if (!logLevel) { - this._log(levels.WARN, 'log4js:logger.log: invalid value for log-level as first parameter given: ', level); + this._log(levels.WARN, ['log4js:logger.log: invalid value for log-level as first parameter given:', level]); logLevel = levels.INFO; + args = [level, ...args]; } if (this.isLevelEnabled(logLevel)) { this._log(logLevel, args); diff --git a/test/tap/newLevel-test.js b/test/tap/newLevel-test.js index 1422ab30..957b317e 100644 --- a/test/tap/newLevel-test.js +++ b/test/tap/newLevel-test.js @@ -232,14 +232,32 @@ test("../../lib/logger", batch => { const logger = log4js.getLogger(); - logger.log("LEVEL_DOES_NEXT_EXIST", "Event 1"); - logger.log(log4js.levels.getLevel("LEVEL_DOES_NEXT_EXIST"), "Event 2"); + logger.log("LEVEL_DOES_NOT_EXIST", "Event 1"); + logger.log(log4js.levels.getLevel("LEVEL_DOES_NOT_EXIST"), "Event 2"); + logger.log("Event 3"); 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[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[1], undefined); t.equal(events[3].level.toString(), "INFO", "should fall back to INFO"); + t.equal(events[3].data[0], undefined); + t.equal(events[3].data[1], "Event 2"); + + t.equal(events[4].level.toString(), "WARN", "should log warning"); + t.equal(events[4].data[0], "log4js:logger.log: invalid value for log-level as first parameter given:"); + t.equal(events[4].data[1], "Event 3"); + t.equal(events[5].level.toString(), "INFO", "should fall back to INFO"); + t.equal(events[5].data[0], "Event 3"); + t.end(); });