A high-performance asynchronous C++ logging library using fmtlib formatting with nanosecond latency.
fmtlog is a high-performance asynchronous logging library for C++ that uses fmtlib-style formatting. It solves the need for extremely fast logging in latency-sensitive applications by providing nanosecond-scale front-end operations while maintaining rich, type-safe log formatting.
C++ developers building performance-critical applications such as high-frequency trading systems, game engines, or real-time services where logging overhead must be minimized.
Developers choose fmtlog for its unique combination of fmtlib's expressive formatting, lower latency than NanoLog, higher throughput than spdlog, and fine-grained control over threading and buffering without hidden background threads.
fmtlog is a performant fmtlib-style logging library with latency in nanoseconds.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Benchmarks show front-end operations in single-digit nanoseconds, outperforming NanoLog and spdlog for most message types, as detailed in the performance section.
Leverages fmtlib for type-safe format strings, supporting custom types, ranges, tuples, and user-defined formatters, enabling expressive log messages.
Allows explicit polling via fmtlog::poll() or background thread creation, giving developers full control over logging thread management for predictable behavior.
Asynchronous multi-threaded logging ensures logs are output in time order, critical for debugging concurrent applications without race conditions.
Requires manual calls to fmtlog::poll() or background thread setup, adding complexity and potential points of failure in application code.
Each log statement adds approximately 50 bytes for decoding functions, significantly increasing binary size in log-heavy applications, as admitted in the README.
Lacks native support for color output, log rotation, or syslog, requiring custom implementations via callbacks or external handling.