Label: logme

logme is a logging library for C/C++ that lets applications control logging behavior at runtime. It allows developers to enable or disable logs, redirect output, and limit log volume without restarting the application.

The library helps build a flexible and scalable logging system. Developers can configure log levels, routing, and formatting through configuration instead of recompiling code. This approach simplifies debugging and improves observability in production environments.

logme also supports early (boot) logging, loading configuration from external sources, and merging early logs into the main logging pipeline. This ensures that the application preserves diagnostic information even during the earliest stages of initialization.

Boot logging during early application initialization

In complex software systems, the initialization phase is rarely trivial and usually consists of several stages. Errors may occur before the main logging system becomes available, leaving developers without visibility into what exactly went wrong and where. In practice, logging is initialized as early as possible. However, there are cases where configuration is loaded from

Readable logs in C++: practical techniques with logme

The primary goal of any logging library is not raw performance and not even API convenience. Its real purpose is to help produce readable logs in C++—logs that make it possible to quickly understand what is going on when something breaks. That is why developers intentionally trade a bit of CPU time and system resources:

Function Profiling with the logme Library

The logme library includes powerful built-in support for function profiling. One of its strongest advantages is how little effort it takes to start tracing function execution in detail. With logme, you can add a single macro to automatically log: function entry (including its name), function exit, optionally, input parameters, and the return value. This makes

Async Logging Is Not a Silver Bullet — What Actually Limits Performance

Why moving logging to another thread doesn’t make it cheaper — and where the cost really goes Async logging is often treated as an obvious optimization. It isn’t. It just moves the cost somewhere else. This idea sounds simple: synchronous logging blocks, async logging doesn’t — so it must be faster. But once you look