hermannm.dev

devlog

Implemented in:

After working with Go in multiple projects (casus-belli, analysis, coffeetalk, Ignite), one of the things I missed was a nicer human-readable log output format. So when Go added structured logging to its standard library, I took the opportunity to write my own log handler! With help from an amazing guide written by one of the Go maintainers, I created devlog, a structured log handler with an output format designed for readability in local development. I now use this in all my Go projects where I need logging.

Later, I started writing more and more Rust (see gadd), and there too I found myself missing nicer log output formats. So I decided to write my own log subscriber for tracing, one of the most popular logging libraries for Rust, to use the same output format as my Go library. And so, devlog-tracing was born.

Finally, after starting my job at Liflig, I started writing Kotlin for the backend. I found myself unhappy with the logging library we were using at the time, and so I decided to write yet another version of devlog. This implementation is a thin wrapper over the standard Java logging libraries SLF4J and Logback, but with a more ergonomic API for Kotlin.