Category: Logging

This section explores logging in C and C++ from a practical, performance-oriented perspective. Instead of repeating common patterns, the focus is on what actually matters in real systems: cost of logging calls, formatting overhead, synchronization, buffering strategies, and I/O behavior.

You’ll find benchmarks, deep dives into implementation details, and comparisons of popular libraries, along with discussions of design trade-offs — including when asynchronous logging helps and when it becomes a bottleneck. The goal is to understand logging not as a utility, but as a critical part of system performance and observability.

Logging Subsystems in C++: Why They Matter and How to Use Them

C++ logging subsystems become necessary as a project grows, even though almost nobody thinks about them at the beginning. Most projects start with simple logging. A few levels — debug, info, warning, error — and that is enough to understand what is happening. While the codebase is small, the log reads almost like a linear

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