From b206ac6ffd81884c073930ba83a7c93c5dee7596 Mon Sep 17 00:00:00 2001 From: Josh Dover Date: Fri, 2 Nov 2018 17:31:29 -0500 Subject: [PATCH] Fix error log formatting (#24788) (#24929) --- .../__snapshots__/invalid_config.test.js.snap | 18 -------- .../integration_tests/invalid_config.test.js | 5 ++- src/server/logging/log_format.js | 6 +-- src/server/logging/log_format_json.test.js | 42 +++++++++---------- 4 files changed, 28 insertions(+), 43 deletions(-) delete mode 100644 src/cli/serve/integration_tests/__snapshots__/invalid_config.test.js.snap diff --git a/src/cli/serve/integration_tests/__snapshots__/invalid_config.test.js.snap b/src/cli/serve/integration_tests/__snapshots__/invalid_config.test.js.snap deleted file mode 100644 index 47b98f740af5..000000000000 --- a/src/cli/serve/integration_tests/__snapshots__/invalid_config.test.js.snap +++ /dev/null @@ -1,18 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`cli invalid config support exits with statusCode 64 and logs a single line when config is invalid 1`] = ` -Array [ - Object { - "@timestamp": "## @timestamp ##", - "error": "## Error with stack trace ##", - "level": "fatal", - "message": "\\"unknown.key\\", \\"other.unknown.key\\", \\"other.third\\", \\"some.flat.key\\", and \\"some.array\\" settings were not applied. Check for spelling errors and ensure that expected plugins are installed.", - "pid": "## PID ##", - "tags": Array [ - "fatal", - "root", - ], - "type": "error", - }, -] -`; diff --git a/src/cli/serve/integration_tests/invalid_config.test.js b/src/cli/serve/integration_tests/invalid_config.test.js index 495bfbeaa939..add9654b30ad 100644 --- a/src/cli/serve/integration_tests/invalid_config.test.js +++ b/src/cli/serve/integration_tests/invalid_config.test.js @@ -45,6 +45,9 @@ describe('cli invalid config support', function () { expect(error).toBe(undefined); expect(status).toBe(64); - expect(logLines).toMatchSnapshot(); + expect(logLines[0].message).toMatch('{ Error: "unknown.key", "other.unknown.key", "other.third", "some.flat.key", and "' + + 'some.array" settings were not applied. Check for spelling errors and ensure that expected plugins are installed.'); + expect(logLines[0].tags).toEqual(['fatal', 'root']); + expect(logLines[0].type).toEqual('log'); }, 20 * 1000); }); diff --git a/src/server/logging/log_format.js b/src/server/logging/log_format.js index 994b5af8b89f..8c5136006b4c 100644 --- a/src/server/logging/log_format.js +++ b/src/server/logging/log_format.js @@ -151,11 +151,11 @@ export default class TransformObjStream extends Stream.Transform { const message = get(event, 'error.message'); data.message = message || 'Unknown error (no message)'; } - else if (event.data instanceof Error) { + else if (event.error instanceof Error) { data.type = 'error'; data.level = _.contains(event.tags, 'fatal') ? 'fatal' : 'error'; - data.error = serializeError(event.data); - const message = get(event, 'data.message'); + data.error = serializeError(event.error); + const message = get(event, 'error.message'); data.message = message || 'Unknown error object (no message)'; } else if (_.isPlainObject(event.data) && event.data.tmpl) { diff --git a/src/server/logging/log_format_json.test.js b/src/server/logging/log_format_json.test.js index 1632b2b401c8..805de29aab3a 100644 --- a/src/server/logging/log_format_json.test.js +++ b/src/server/logging/log_format_json.test.js @@ -132,9 +132,9 @@ describe('KbnLoggerJsonFormat', () => { expect(error).toEqual({}); }); - it('event data instanceof Error', async () => { + it('event error instanceof Error', async () => { const event = { - data: new Error('test error 2'), + error: new Error('test error 2'), }; const result = await createPromiseFromStreams([ createListStream([event]), @@ -145,16 +145,16 @@ describe('KbnLoggerJsonFormat', () => { expect(level).toBe('error'); expect(message).toBe('test error 2'); - expect(error.message).toBe(event.data.message); - expect(error.name).toBe(event.data.name); - expect(error.stack).toBe(event.data.stack); - expect(error.code).toBe(event.data.code); - expect(error.signal).toBe(event.data.signal); + expect(error.message).toBe(event.error.message); + expect(error.name).toBe(event.error.name); + expect(error.stack).toBe(event.error.stack); + expect(error.code).toBe(event.error.code); + expect(error.signal).toBe(event.error.signal); }); - it('event data instanceof Error - fatal', async () => { + it('event error instanceof Error - fatal', async () => { const event = { - data: new Error('test error 2'), + error: new Error('test error 2'), tags: ['fatal', 'tag2'] }; const result = await createPromiseFromStreams([ @@ -167,16 +167,16 @@ describe('KbnLoggerJsonFormat', () => { expect(level).toBe('fatal'); expect(message).toBe('test error 2'); - expect(error.message).toBe(event.data.message); - expect(error.name).toBe(event.data.name); - expect(error.stack).toBe(event.data.stack); - expect(error.code).toBe(event.data.code); - expect(error.signal).toBe(event.data.signal); + expect(error.message).toBe(event.error.message); + expect(error.name).toBe(event.error.name); + expect(error.stack).toBe(event.error.stack); + expect(error.code).toBe(event.error.code); + expect(error.signal).toBe(event.error.signal); }); - it('event data instanceof Error, no message', async () => { + it('event error instanceof Error, no message', async () => { const event = { - data: new Error(''), + error: new Error(''), }; const result = await createPromiseFromStreams([ createListStream([event]), @@ -187,11 +187,11 @@ describe('KbnLoggerJsonFormat', () => { expect(level).toBe('error'); expect(message).toBe('Unknown error object (no message)'); - expect(error.message).toBe(event.data.message); - expect(error.name).toBe(event.data.name); - expect(error.stack).toBe(event.data.stack); - expect(error.code).toBe(event.data.code); - expect(error.signal).toBe(event.data.signal); + expect(error.message).toBe(event.error.message); + expect(error.name).toBe(event.error.name); + expect(error.stack).toBe(event.error.stack); + expect(error.code).toBe(event.error.code); + expect(error.signal).toBe(event.error.signal); }); }); });