diff --git a/lib/logger.js b/lib/logger.js index 15e2d24..da98fff 100644 --- a/lib/logger.js +++ b/lib/logger.js @@ -81,12 +81,8 @@ class Logger { _log(level, data) { debug(`sending log data (${level}) to appenders`); - let loggingEvent = null; - if (this.useCallStack) { - loggingEvent = new LoggingEvent(this.category, level, data, this.context, parseCallStack(new Error())); - } else { - loggingEvent = new LoggingEvent(this.category, level, data, this.context); - } + // eslint-disable-next-line max-len + const loggingEvent = new LoggingEvent(this.category, level, data, this.context, (this.useCallStack) && parseCallStack(new Error())); clustering.send(loggingEvent); } diff --git a/test/tap/layouts-test.js b/test/tap/layouts-test.js index 006f355..bbc22fe 100644 --- a/test/tap/layouts-test.js +++ b/test/tap/layouts-test.js @@ -301,11 +301,6 @@ test('log4js layouts', (batch) => { assert.end(); }); - t.test('%s should output stack', (assert) => { - testPattern(assert, layout, event, tokens, '%s', callStack); - assert.end(); - }); - t.test('%f should output filename', (assert) => { testPattern(assert, layout, event, tokens, '%f', fileName); assert.end(); @@ -321,6 +316,35 @@ test('log4js layouts', (batch) => { assert.end(); }); + t.test('%s should output stack', (assert) => { + testPattern(assert, layout, event, tokens, '%s', callStack); + assert.end(); + }); + + t.test('%f should output empty string when fileName not exist', (assert) => { + delete event.fileName; + testPattern(assert, layout, event, tokens, '%f', ''); + assert.end(); + }); + + t.test('%l should output empty string when lineNumber not exist', (assert) => { + delete event.lineNumber; + testPattern(assert, layout, event, tokens, '%l', ''); + assert.end(); + }); + + t.test('%o should output empty string when culumnNumber not exist', (assert) => { + delete event.columnNumber; + testPattern(assert, layout, event, tokens, '%o', ''); + assert.end(); + }); + + t.test('%s should output empty string when callStack not exist', (assert) => { + delete event.callStack; + testPattern(assert, layout, event, tokens, '%s', ''); + assert.end(); + }); + t.test('should output anything not preceded by % as literal', (assert) => { testPattern(assert, layout, event, tokens, 'blah blah blah', 'blah blah blah'); assert.end();