Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Include tags for errors logged with server.log() or request.log() #151

Merged
merged 1 commit into from Dec 13, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 2 additions & 1 deletion index.js
Expand Up @@ -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)
}
Expand All @@ -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'
Expand Down
34 changes: 33 additions & 1 deletion test.js
Expand Up @@ -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()
Expand All @@ -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
})

Expand Down Expand Up @@ -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
Expand Down