-
Notifications
You must be signed in to change notification settings - Fork 2
Home
logme is a flexible, high-performance logging library designed for applications that require runtime configurability, dynamic control, and zero-cost overhead when logging is disabled.
Unlike traditional logging frameworks, logme supports:
- Channel hierarchies
- Runtime reconfiguration without recompilation
- JSON-based configuration
- Dynamic control via a built-in control server
- Log encryption (per-line, ChaCha-based)
- Optional logging in Release builds
- Fine-grained message filtering via callbacks
- Unified logging API supporting printf-style, iostream-style, and std::format-style formatting
- Buffered and optimized file output designed for high-throughput production workloads
logme can be used as a simple logger — or as a fully dynamic logging subsystem.
For details on the logging API and available macros, see: Logging Macros.
logme supports three configuration approaches:
-
Default configuration
No explicit configuration. A default channel with sensible settings is created automatically.
See: Getting Started – Default Setup -
Hardcoded configuration
Channels and backends are created explicitly in code.
See: Getting Started – Hardcoded Setup -
JSON-based configuration (recommended)
Channels, hierarchy, backends, routing, error handling, and control server are described in a JSON file and can be reloaded at runtime.
See: Getting Started – JSON-based Setup
All three models can coexist.
- Windows
- Linux
- macOS
Console output supports ANSI color sequences on both platforms, including modern Windows terminals with VT processing enabled.
logme — flexible runtime logging system
Home · Getting Started · Architecture · Output · Backends · Configuration
GitHub: https://github.com/efmsoft/logme