A portable, simple, and extensible header-only C++ logging library in about 1000 lines of code.
Plog is a portable, simple, and extensible logging library for C++. It provides a lightweight, header-only solution for adding logging capabilities to applications, with support for multiple output formats, appenders, and platforms. It solves the need for a minimal yet powerful logging tool without external dependencies.
C++ developers working on cross-platform applications, embedded systems, or projects where a small footprint and ease of integration are critical. It's especially suited for those who prefer a header-only library with no build steps.
Developers choose Plog for its exceptional balance of simplicity and flexibility—offering features like CSV logging, wide string support, and extensibility in about 1000 lines of code, all without sacrificing portability or requiring third-party dependencies.
Portable, simple and extensible C++ logging library
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
No linking or building required; just include headers or use package managers like vcpkg, making integration trivial for any project.
Supports Windows, Linux, macOS, Android, FreeRTOS, and more, with consistent behavior and no external dependencies.
Allows easy addition of custom data types, appenders, formatters, and converters via clear interfaces, as shown in samples like CustomFormatter.
Features lazy stream evaluation to minimize overhead when logging is disabled, and small codebase (about 1000 LOC) reduces binary impact.
Lacks built-in asynchronous appenders, meaning high log volumes can directly impact application performance, as noted in the performance section.
Out-of-the-box formatters are basic (TXT, CSV, etc.), lacking native support for common structured formats like JSON without custom implementation.
Automatic 'this' pointer capture is only available on MSVC, and wide string support on macOS requires linking to external iconv library.
Advanced setups like multiple loggers, shared instances, or chained loggers involve manual template parameters and macro definitions, which can be error-prone.