From 8240968e14625b9847927d6f7c59d66595bfeeef Mon Sep 17 00:00:00 2001 From: Jonathan Samines Date: Mon, 13 Dec 2021 07:43:07 -0600 Subject: [PATCH] Include tags for errors logged with server.log() or request.log() (#151) --- index.js | 3 ++- test.js | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 8257c2b..de6170a 100644 --- a/index.js +++ b/index.js @@ -118,7 +118,7 @@ async function register (server, options) { server.events.on('log', function (event) { if (event.error) { - logger.error({ err: event.error }) + logger.error({ tags: event.tags, err: event.error }) } else if (!isCustomTagsLoggingIgnored(event, ignoredEventTags.log)) { logEvent(logger, event) } @@ -142,6 +142,7 @@ async function register (server, options) { if (event.error && isEnabledLogEvent(options, 'request-error')) { request.logger.error( { + tags: event.tags, err: event.error }, 'request error' diff --git a/test.js b/test.js index 7b3fa30..aa3d5f0 100644 --- a/test.js +++ b/test.js @@ -426,6 +426,7 @@ experiment('logs through server.log', () => { }) await tagsWithSink(server, {}, data => { + expect(data.tags).to.equal(['error', 'tag']) expect(data.err.type).to.equal('Error') expect(data.err.message).to.equal('foobar') expect(data.err.stack).to.exist() @@ -434,7 +435,7 @@ experiment('logs through server.log', () => { resolver() }) - server.log(['error'], new Error('foobar')) + server.log(['error', 'tag'], new Error('foobar')) await done }) @@ -593,6 +594,37 @@ experiment('logs through request.log', () => { await done }) + test('with logged error object', async () => { + const server = getServer() + server.route({ + path: '/', + method: 'GET', + handler: (req, h) => { + req.log(['error', 'tag'], new Error('foobar')) + return 'hello world' + } + }) + + let resolver + const done = new Promise((resolve, reject) => { + resolver = resolve + }) + + await tagsWithSink(server, {}, (data) => { + expect(data.tags).to.equal(['error', 'tag']) + expect(data.err.type).to.equal('Error') + expect(data.err.message).to.equal('foobar') + expect(data.err.stack).to.exist() + // highest level tag + expect(data.level).to.equal(50) + + resolver() + }) + + await server.inject('/') + await done + }) + test('uses default tag mapping', async () => { const server = getServer() let done