|
1 | 1 | # evlog |
2 | 2 |
|
| 3 | +## 2.9.0 |
| 4 | + |
| 5 | +### Minor Changes |
| 6 | + |
| 7 | +- [#212](https://github.com/HugoRCD/evlog/pull/212) [`96c47cd`](https://github.com/HugoRCD/evlog/commit/96c47cd3adfbaf0e6c53db9be55b45f652dfbdb8) Thanks [@MrLightful](https://github.com/MrLightful)! - Add React Router middleware integration (`evlog/react-router`) with automatic wide-event logging, drain, enrich, and tail sampling support |
| 8 | + |
| 9 | +### Patch Changes |
| 10 | + |
| 11 | +- [#215](https://github.com/HugoRCD/evlog/pull/215) [`31cb4ab`](https://github.com/HugoRCD/evlog/commit/31cb4ab903c969107a368cb5a9629eff6fe0c63b) Thanks [@HugoRCD](https://github.com/HugoRCD)! - fix(nitro): always create logger in request hook so `useLogger()` works in server middleware |
| 12 | + |
| 13 | + Previously, calling `useLogger(event)` inside a Nuxt server middleware would throw `"Logger not initialized"` because the Nitro plugin skipped logger creation for routes not matching `include` patterns. Since middleware runs for every request, this made it impossible to use `useLogger` there. |
| 14 | + |
| 15 | + The `shouldLog` filtering is now evaluated at emit time instead of creation time — the logger is always available on `event.context.log`, but events for non-matching routes are silently discarded. |
| 16 | + |
| 17 | +- [#218](https://github.com/HugoRCD/evlog/pull/218) [`453a548`](https://github.com/HugoRCD/evlog/commit/453a5483d1a7b2db7979edbc306cd9b9584e9f40) Thanks [@benhid](https://github.com/benhid)! - fix(parseError): respect `.status` / `.statusCode` on Error instances instead of hardcoding 500 |
| 18 | + |
| 19 | + Frameworks like NestJS attach HTTP status directly on Error subclasses (e.g. `BadRequestException` has `.status = 400`). Previously, `parseError()` ignored these properties and always returned 500 for any `Error` instance without a `data` property. Now uses `extractErrorStatus()` to extract the correct status. |
| 20 | + |
| 21 | +- [#219](https://github.com/HugoRCD/evlog/pull/219) [`79f811d`](https://github.com/HugoRCD/evlog/commit/79f811dab02717470ed5f178b5c944a395dc4025) Thanks [@HugoRCD](https://github.com/HugoRCD)! - Improve TanStack Start documentation with route filtering, pipeline (batching & retry), tail sampling sections, Vite plugin callout, and TanStack Router vs TanStack Start disambiguation |
| 22 | + |
3 | 23 | ## 2.8.0 |
4 | 24 |
|
5 | 25 | ### Minor Changes |
6 | 26 |
|
7 | 27 | - [#196](https://github.com/HugoRCD/evlog/pull/196) [`abda28c`](https://github.com/HugoRCD/evlog/commit/abda28cc00b6276a59c2cf9dcfca295f4d7b878c) Thanks [@HugoRCD](https://github.com/HugoRCD)! - Add `evlog/ai` integration for AI SDK v6+ observability. |
8 | | - |
9 | 28 | - `createAILogger(log)` returns an `AILogger` with `wrap()` and `captureEmbed()` |
10 | 29 | - Model middleware captures token usage, tool calls, finish reason, and streaming metrics |
11 | 30 | - Supports `generateText`, `streamText`, `generateObject`, `streamObject`, and `ToolLoopAgent` |
|
19 | 38 | - `ai` is an optional peer dependency |
20 | 39 |
|
21 | 40 | - [#189](https://github.com/HugoRCD/evlog/pull/189) [`d92fb46`](https://github.com/HugoRCD/evlog/commit/d92fb46b2d272dca0de73a0ffedda746304f57b6) Thanks [@HugoRCD](https://github.com/HugoRCD)! - Add `evlog/vite` plugin for build-time DX enhancements in any Vite-based framework. |
22 | | - |
23 | 41 | - Zero-config auto-initialization via Vite `define` (no `initLogger()` needed) |
24 | 42 | - Build-time `log.debug()` stripping in production builds (default) |
25 | 43 | - Source location injection (`__source: 'file:line'`) for object-form log calls |
|
31 | 49 | ### Patch Changes |
32 | 50 |
|
33 | 51 | - [#197](https://github.com/HugoRCD/evlog/pull/197) [`3601d30`](https://github.com/HugoRCD/evlog/commit/3601d303c122509a8f665f20e8275248e6e6e7f5) Thanks [@HugoRCD](https://github.com/HugoRCD)! - Add retry with exponential backoff to all HTTP drain adapters and improve timeout error messages. |
34 | | - |
35 | 52 | - Transient failures (timeouts, network errors, 5xx) are retried up to 2 times with exponential backoff (200ms, 400ms) |
36 | 53 | - `AbortError` timeout errors now display a clear message: `"Axiom request timed out after 5000ms"` instead of the cryptic `"DOMException [AbortError]: This operation was aborted"` |
37 | 54 | - New `retries` option on all adapter configs (Axiom, OTLP, Sentry, PostHog, Better Stack) |
|
0 commit comments