Open-source C++ library

Pure Log

A C++23 logging library with chainable metadata, formatted messages, custom severity levels, and multiple output strategies.

Overview

Composable logging without a large dependency stack.

Pure Log provides built-in and custom log levels, format-string messages, timestamps, source locations, colors, and several output types. Applications can use a traditional header interface or C++ modules and derive a project-specific singleton logger through the library's CRTP base.

Design

Message creation and output stay separate.

Log callA level and formatted message create a log entry.

MetadataTime and source location can be chained onto the entry.

OutputConsole, file, or a custom sink receives the result.

Source example

Metadata is added where it is useful.

Each logging call returns an entry that can be enriched without requiring the same metadata on every line. The example application mixes formatted values, time, and source location.

example/example.cppC++
debugger.log(
    "Invalid value passed to parser: {}", 3
).time();

debugger.warn("This is a warning message.")
    .location();

debugger.info(
    "Informational message without additional data."
);
Current scope

Flexible presentation with deliberately visible boundaries.

The library supports whole-message, part-specific, and level-specific formatting; buffered or immediate console output; file output; and user-defined sinks. The current repository does not present benchmarks, file rotation, or a documented thread-safety contract, so this portfolio does not imply those guarantees.