v1.0.0 (2025-04-30)
📦 Dependencies
Available on Clojars:
- Telemere - main dependency.
- SLF4J provider - additional dependency for users that want their Java logging to go to Telemere.
This project uses Break Versioning.
Release notes
This is the first stable release of Telemere v1! 🍾🥳🎉
Sincere thanks to everyone that's been helping test and give feedback. As always, please report any unexpected problems on GitHub or the Slack channel 🙏
Telemere is part of a suite of practical and complementary observability tools for modern Clojure and ClojureScript applications:
- Telemere for logging, tracing, and general telemetry
- Tufte for performance monitoring (v3 RC1 just released)
- Truss for assertions and error handling (v2 recently released)
New to Telemere? Start here!
Upgrading from an earlier version? See the list of changes below👇
Cheers! :-)
Changes since v1 RC1
See linked commits for more info:
In v1 stable (2025-04-30):
- [fix] [#61] OpenTelemetry handler not cancelling timer on shutdown [51e8a10]
- [fix] [#32] Fix clj-kondo declaration typo (@icp1994) [254cd64]
- [new] Support
:host,:threadoverride [31a4fc2] - [new] Add callsite info to compile-time errors [345b125]
- [doc] Use consistent style for docstring opts [94fec57]
In v1 RC5 (2025-03-10):
- [mod] Rename
:rate-limit->:limit[f37f54e] (RC5) - [mod] Rename
:sample-rate->:sample[1f4b49a] (RC5) - [mod] Rename
:middleware->:xfn[7cccf67] (RC5) - [mod] [#56]
utils/clean-signal-fnexclude:schemaby default [c78eb07] (RC5) - [fix] [#57] File handling: use nio API to create missing parent dirs [af45ffc] (RC5)
- [fix] [#55] SLF4J signals should include
*ctx*[79173a6] (RC5) - [fix] [#32] Fix clj-kondo warnings [c60f33e] (RC5)
- [new] [#57] File handling: make file stream more robust [82f4c31] (RC5)
In v1 RC4 (2025-03-03):
- [mod]
log!,event!now always return nil [ac5feb4] (RC4) - [mod] [#51] Make default console handler sync by default [78ed4d7] (RC4)
- [mod] [#52]
signal-preamble-fnnow ignores nil:kind(@marksto) [634cc53] (RC4) - [fix] [#52]
signal-preamble-fnshould use host info in signal (@marksto) [410ed89] (RC4) - [new]Add
log!?,event!?[ac5feb4] (RC4) - [new] Alias
keep-callsite, mention insignal!docs [bfea515] (RC4) - [doc][#50] Expand docs for
set-min-level!(via Encore update) (RC4) - [doc] Mention
:instmonotonicity [6b0e0b9] (RC4)
In v1 RC3 (2025-02-27):
- [mod] Signal content: drop
:location, add:coords[fda22ce] (RC3) - [mod] Signal options: drop
:location, add:coords[1f99f71] (RC3) - [mod] OpenTelemetry: use standard attr names when possible [bb715fb] (RC3)
- [fix] Timbre shim: rename
spy!->spy(@lvh) [3a9ffc6] (RC3) - [fix] Timbre shim: don't attach empty
:vargsdata [0e642ba] (RC3) - [fix] Fix environment val docs [db26a5d] (RC3)
- [fix]
spy!docstring typo (@rafd) [35606d9] (RC3) - [new] Use Truss v2 and contextual exceptions when relevant (RC3)
- [new] [#44] Open Telemetry handler: add span kind option (@farcaller) [413cce8] (RC3)
- [new] Reduced Cljs build sizes in some cases (RC3)
- [doc]Timbre shim: document different
spyerror handling [1517f30] (RC3) - [doc] [#43] ns filters work for SLF4J logger names (@lvh) [db0498b] (RC3)
In v1 RC2 (2024-12-24):
- [mod] [#39] Discontinued separate "shell" library [096c432] (RC2)
- [mod] Change return value of experimental
with-signals[cb6a5d9] (RC2) - [mod] Remove rarely-used advanced options from
catch->error![0de5c09] (RC2) - [mod] Remove "- " msg separator from default preamble output [d61f6c2] (RC2)
- [mod] Postal handler now uses default preamble fn for email subject [706a8b6] (RC2)
- [mod] Default
signal-content-fn: omit redundant parent/root id namespaces [55323f1] (RC2) - [mod] Default
signal-content-fn: swapctx,kvsposition [b208532] (RC2) - [mod] Default
signal-content-fn: omit:rootif it's same as parent [0464285] (RC2) - [mod] Omit empty
:data,:ctxfrom signal content output [d78663a] (RC2) - [fix] Broken signal string representation [8c701d4] (RC2)
- [fix] Trace formatting: always include root info [f522307] (RC2)
- [fix] Trace formatting: properly format nil ids [68a894e] (RC2)
- [fix] [#36] Fix missing cljdoc docstrings [b58ec73] (RC2)
- [new] Add
timbre->telemereappender and update docs [ace6e2d] (RC2) - [new] All signal creators can now take single opts map [d2386d6] (RC2)
- [new] Add
& optssupport tosignal!,signal-allowed?[a04f255] (RC2) - [new] Give
signal!a default kind and level [7532c2e] (RC2) - [new] Better error message when
signal!given non-map arg [d563ac1] (RC2) - [new] Improve error info on worst-case handler errors [484b3df] (RC2)
- [new] Allow manual
:run-valoverride [9dc883d] (RC2) - [new] [#34] Add new
signal-preamble-fnopts (@Knotschi) [0822217] (RC2) - [new] Alias low-level formatters in utils ns [9dc9a46] (RC2)
- [doc] [#33] Add community examples link to Bling Gist [8cd4ca9] (RC2)
- [doc] Better document pattern of using
trace!/spy!withcatch->error![5c977a3] (RC2) - [doc] [#35] Emphasize that signal opts must be a compile-time map [55720ac] (RC2)
- [doc] Add FAQ item re:
event!arg order [822032d] (RC2) - [doc] Document that
:msgmay be a delay [13d9dbf] (RC2)