Repolode
odygrd

odygrd/quill

Ultra-low-latency asynchronous C++17 logging and metrics library that defers formatting and I/O to a background thread.

Stars
3,057
Forks
274
Open issues
7
Last commit
4 days ago

What is it?

Quill is a C++17 logging library that keeps formatting and I/O off latency-sensitive application threads. The calling thread only encodes log arguments into a per-thread lock-free queue, and a dedicated backend worker later decodes them, formats them with {fmt}, and writes them to the configured sinks.

Beyond text logs, Quill can publish pre-registered metric samples through the same asynchronous backend. A bundled Prometheus sink handles counters, gauges, histograms and summaries, and custom sinks can route samples to StatsD, OpenTelemetry or other collectors. Console output with color, rotating files, JSON output, per-sink filters, MDC context, rate-limited macros and backtrace logging are also included.

The library supports Linux, macOS, Windows and BSD, and can be installed through vcpkg, Conan, Homebrew, Conda, Bzlmod and several other package managers, or vendored with CMake. It offers both a macro API for the lowest latency and a macro-free function API.

Key features

  • 01Encodes log arguments on the calling thread and formats them on a background worker.
  • 02Publishes pre-registered metrics with a bundled Prometheus sink and custom sinks.
  • 03Supports console output with color, rotating files and JSON logging.
  • 04Offers per-sink filters, MDC context and rate-limited log macros.
  • 05Provides configurable bounded or unbounded queues with blocking or dropping behavior.
  • 06Includes a crash signal handler and an Android logging sink.

Use cases

  • Logging in latency-sensitive C++ trading, robotics or real-time systems.
  • Adding asynchronous structured logging to a high-throughput C++ service.
  • Exporting application metrics to Prometheus from a C++ process.
  • Running C++ logging on Linux, macOS, Windows, BSD or Android targets.

Quick start

  1. 1

    Install Quill with a package manager, e.g. vcpkg

    vcpkg install quill
  2. 2

    Install Quill with Homebrew

    brew install quill
  3. 3

    Use simple_logger() in your C++ code to log to the console or a file, as shown in the Quickest Setup example

Things to know

  • Requires C++17 or later.

Topics

FAQ

What is quill?
Ultra-low-latency asynchronous C++17 logging and metrics library that defers formatting and I/O to a background thread. Quill is a C++17 logging library that keeps formatting and I/O off latency-sensitive application threads. The calling thread only encodes log arguments into a per-thread lock-free queue, and a dedicated backend worker later decodes them, formats them with {fmt}, and writes them to the configured sinks.
Is quill free to use? What license does it have?
quill is open source under the MIT license. Check the license terms before using it in commercial products.
Is quill still maintained?
Actively maintained. The last commit to quill was on Oct 17, 2026.
What can I use quill for?
Logging in latency-sensitive C++ trading, robotics or real-time systems. Adding asynchronous structured logging to a high-throughput C++ service. Exporting application metrics to Prometheus from a C++ process. Running C++ logging on Linux, macOS, Windows, BSD or Android targets.
How do I install quill?
Install Quill with a package manager, e.g. vcpkg: vcpkg install quill Install Quill with Homebrew: brew install quill Use simple_logger() in your C++ code to log to the console or a file, as shown in the Quickest Setup example
Where can I get quill?
The source code and installation instructions are on GitHub: https://github.com/odygrd/quill

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects