Skip to content
Eduard Mishkurov edited this page Jan 25, 2026 · 9 revisions

logme

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.

Configuration Models

logme supports three configuration approaches:

  1. Default configuration
    No explicit configuration. A default channel with sensible settings is created automatically.
    See: Getting Started – Default Setup

  2. Hardcoded configuration
    Channels and backends are created explicitly in code.
    See: Getting Started – Hardcoded Setup

  3. 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.

Platform Support

  • Windows
  • Linux
  • macOS

Console output supports ANSI color sequences on both platforms, including modern Windows terminals with VT processing enabled.

Clone this wiki locally