diff --git a/lib/appenders/logstashUDP.js b/lib/appenders/logstashUDP.js index f460fb6..51d2b74 100755 --- a/lib/appenders/logstashUDP.js +++ b/lib/appenders/logstashUDP.js @@ -62,9 +62,11 @@ function logstashUDP(config, layout) { /* eslint no-prototype-builtins:1,no-restricted-syntax:[1, "ForInStatement"] */ if (loggingEvent.data.length > 1) { const secondEvData = loggingEvent.data[1]; - Object.keys(secondEvData).forEach((key) => { - fields[key] = secondEvData[key]; - }); + if ((secondEvData !== undefined) && (secondEvData !== null)) { + Object.keys(secondEvData).forEach((key) => { + fields[key] = secondEvData[key]; + }); + } } fields.level = loggingEvent.level.levelStr; fields.category = loggingEvent.categoryName; diff --git a/test/tap/logstashUDP-test.js b/test/tap/logstashUDP-test.js index c2cb8a1..d04e2f5 100644 --- a/test/tap/logstashUDP-test.js +++ b/test/tap/logstashUDP-test.js @@ -186,6 +186,44 @@ test('logstashUDP appender', (batch) => { t.end(); }); + batch.test('Send null as argument', (t) => { + const setup = setupLogging('myLogger', { + host: '127.0.0.1', + port: 10001, + type: 'logstashUDP', + category: 'myLogger', + layout: { + type: 'dummy' + } + }); + + const msg = 'test message with null'; + setup.logger.info(msg, null); + const json = JSON.parse(setup.results.buffer.toString()); + + t.equal(json.message, msg); + t.end(); + }); + + batch.test('Send undefined as argument', (t) => { + const setup = setupLogging('myLogger', { + host: '127.0.0.1', + port: 10001, + type: 'logstashUDP', + category: 'myLogger', + layout: { + type: 'dummy' + } + }); + + const msg = 'test message with undefined'; + setup.logger.info(msg, undefined); + const json = JSON.parse(setup.results.buffer.toString()); + + t.equal(json.message, msg); + t.end(); + }); + batch.test('shutdown should close sockets', (t) => { const setup = setupLogging('myLogger', { host: '127.0.0.1',