A big thanks to Clojurists Together, Nubank, and other sponsors of my open source work! I realise that it’s a tough time for a lot of folks and businesses lately, and that sponsorships aren’t always easy 🙏
Hello from sunny Berlin! 👋 🐝 🫶
First up, a new micro library! It’s called Trove, and it’s basically a modern minimal (~100 loc) tools.logging that adds support for ClojureScript, structured logging and filtering.
Mostly library authors that want to do library-level logging without forcing a particular logging library on their users.
Authors could use tools.logging, but that doesn’t support ClojureScript, structured logging, or the kind of data-oriented filtering possible with structured logging.
With Telemere now stable, I wanted to start updating libraries like Sente and Carmine to support structured logging.
Trove basically allows me to do this without forcing anyone to update if they’d rather stick with Timbre or use an alternative like μ/log.
Traditional logging is string oriented. Program state is captured at the logging callsite, then generally formatted into a message string or serialized into something like EDN/JSON before hitting the rest of the logging pipeline (filters → middleware → handlers).
Structured logging is data oriented. Program state is captured at the logging callsite, then retained as-is through the rest of the logging pipeline (filters → middleware → handlers).
The data-oriented approach means that:
The latter matters! It means that it’s easy and cheap to build a rich pipeline that can do data-oriented filtering, analytics, aggregations, transformations, and final handling (e.g. your DB or log aggregator might itself support rich types).
Clojure loves plain data and offers a rich set of data types, structures, and tools. Structured logging takes advantage of this. It’s essentially the extension of the data-first principle to the way we instrument our programs.
Sente has a major new pre-release out.
There’s a lot of significant improvements in here. Some highlights include:
Tufte’s official v3 release is out.
There’s many big improvements, including many new features shared with Telemere, and new handlers for Telemere and Trove.
Other misc releases include:
Next couple months I expect to focus on:
Cheers everyone! :-)