What's Changed
Features ๐
- Add
evlog/effectfor Effect 4, in beta by @JustYannicc in #855 - feat(cli): offer loki and clickhouse in evlog init by @evlogai[bot] in #882
- feat(sazabi): list the sazabi adapter across docs and offer it in evlog init by @evlogai[bot] in #881
- Warn at runtime when a removed v2 API is used by @evlogai[bot] in #872
- Add
issuesto the Sentry drain by @JustYannicc in #856
Bug Fixes ๐
log.set()no longer exposes fields hidden by atoJSONmethod when the same key is set twice by @evlogai[bot] in #898- The published packages no longer ship
.mapfiles by @evlogai[bot] in #895 - HTTP drains now retry a
408 Request Timeoutresponse, with the same backoff and attempt limit as429and5xxby @HugoRCD in #893 evlog/evereportsai.modelandai.provideragain on eve 0.76, which moved the model id fromsession.startedtostep.startedby @HugoRCD in #892- Fix the Nuxt client ingest endpoint (
/api/_evlog/ingest) answering 500 to a request whoseOriginisnull, as sandboxed iframes send, or whoseRefereris not a URL by @HugoRCD in #890 - Fix the local stream server (
startStreamServer,stream: truein Nuxt and Next.js) accepting browser pages from other sites when notokenis set by @HugoRCD in #889 - A wide event no longer gets lost when the same plain object is logged as a field and then thrown as an error's
data, for examplelog.warn('failed', { error: payload })followed bythrow createError({ data: payload })by @nathanchase in #884 - Fix the built-in
emailandjwtredaction patterns, which took quadratic time on long strings by @HugoRCD in #867 - In the browser, errors are serialized the way the server logger does it by @HugoRCD in #877
- The Sentry drain's
issuesoption now reads an error'sstatusbefore its legacystatusCodewhen it decides whether an event is a 4xx by @evlogai[bot] in #880 - In the browser, an
Errorinside an event field is now serialized the same way aslog.error(err), withname,message,stack,causeand fields such asstatusandstatusCode, instead of being sent as{}by @vasilistotskas in #875 - A logged error no longer carries the
dataorinternalfields that its owntoJSONleaves out, on the server and in the browser, whether passed aslog.error(err)or inside an event by @vasilistotskas in #875 - Send the evlog SDK identity to Sentry by @evlogai[bot] in #866
- Send Datadog log batches gzip-compressed by @evlogai[bot] in #865
- Split Datadog log batches into requests of at most 1000 entries by @evlogai[bot] in #863
- Split Sentry log batches into envelopes of at most 100 logs by @evlogai[bot] in #864
Documentation ๐
- docs: fix the datadog gzip changeset, document datadog request splitting and cover sentry issues in e2e by @HugoRCD in #876
Tests ๐งช
- test(core): cover a proto key merged into an existing event field by @HugoRCD in #888
- test(bench): record benchmark baseline and add report-only CI comparison by @evlogai[bot] in #873
Refactoring ๐
Performance Improvements โก๏ธ
Changelog: https://github.com/evloghq/evlog/blob/evlog@2.33.0/packages/evlog/CHANGELOG.md#2330
Full Changelog: https://github.com/evloghq/evlog/compare/evlog@2.32.0...evlog@2.33.0