Skip to content

Commit f00ea1b

Browse files
authored
fix: capture status/statusText from H3 v2+ errors (#80)
1 parent 4e18166 commit f00ea1b

2 files changed

Lines changed: 22 additions & 0 deletions

File tree

packages/evlog/src/logger.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,8 @@ export function createRequestLogger<T extends object = Record<string, unknown>>(
307307
name: err.name,
308308
message: err.message,
309309
stack: err.stack,
310+
...('status' in err && { status: (err as Record<string, unknown>).status }),
311+
...('statusText' in err && { statusText: (err as Record<string, unknown>).statusText }),
310312
...('statusCode' in err && { statusCode: (err as Record<string, unknown>).statusCode }),
311313
...('statusMessage' in err && { statusMessage: (err as Record<string, unknown>).statusMessage }),
312314
...('data' in err && { data: (err as Record<string, unknown>).data }),

packages/evlog/test/logger.test.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,25 @@ describe('createRequestLogger', () => {
314314
})
315315
})
316316

317+
it('captures status/statusText from new-style H3 errors (Nuxt v4.3+)', () => {
318+
const logger = createRequestLogger({})
319+
const error = Object.assign(new Error('Not Found'), {
320+
status: 404,
321+
statusText: 'Not Found',
322+
})
323+
324+
logger.error(error)
325+
326+
const context = logger.getContext()
327+
expect(context.error).toEqual({
328+
name: 'Error',
329+
message: 'Not Found',
330+
stack: expect.any(String),
331+
status: 404,
332+
statusText: 'Not Found',
333+
})
334+
})
335+
317336
it('does not include custom properties when absent', () => {
318337
const logger = createRequestLogger({})
319338
logger.error(new Error('Plain error'))
@@ -325,6 +344,7 @@ describe('createRequestLogger', () => {
325344
stack: expect.any(String),
326345
})
327346
expect(context.error).not.toHaveProperty('statusCode')
347+
expect(context.error).not.toHaveProperty('status')
328348
expect(context.error).not.toHaveProperty('data')
329349
expect(context.error).not.toHaveProperty('cause')
330350
})

0 commit comments

Comments
 (0)