Repolode
odygrd

odygrd/quill

フォーマットとI/Oをバックグラウンドスレッドに委ねる、超低レイテンシの非同期C++17ロギング・メトリクスライブラリ。

スター
3,057
フォーク
274
未解決の Issue
7
最終コミット
4 日前

これは何?

Quillは、レイテンシが重要なアプリケーションスレッドでフォーマットやI/Oを行わないC++17ロギングライブラリです。呼び出し元スレッドでは、ログ引数をスレッドごとのロックフリーキューにエンコードするだけで、専用のバックエンドワーカーが後からデコードし、{fmt}でフォーマットして設定済みの出力先に書き込みます。

テキストログに加え、Quillは事前登録されたメトリクスのサンプルを同じ非同期バックエンド経由で配信できます。同梱のPrometheus sinkはカウンター、ゲージ、ヒストグラム、サマリーを処理でき、カスタムsinkを使えばサンプルをStatsD、OpenTelemetryなどのコレクターに送れます。カラー付きコンソール出力、ローテーションファイル、JSON出力、sinkごとのフィルター、MDCコンテキスト、レート制限付きマクロ、バックトレースログにも対応しています。

Linux、macOS、Windows、BSDをサポートしています。vcpkg、Conan、Homebrew、Conda、Bzlmodなど複数のパッケージマネージャーでインストールできるほか、CMakeでソースを組み込むこともできます。最低レイテンシを実現するマクロAPIと、マクロを使わない関数APIの両方を提供します。

主な機能

  • 01呼び出し元スレッドでログ引数をエンコードし、バックグラウンドワーカーでフォーマットします。
  • 02同梱のPrometheus sinkとカスタムsinkを使って、事前登録済みのメトリクスを配信します。
  • 03カラー付きコンソール出力、ローテーションファイル、JSONロギングに対応しています。
  • 04sinkごとのフィルター、MDCコンテキスト、レート制限付きログマクロを利用できます。
  • 05ブロッキングまたは破棄動作を選べる、サイズ上限付きまたは無制限のキューを設定できます。
  • 06クラッシュシグナルハンドラーとAndroid向けロギングsinkを備えています。

ユースケース

  • レイテンシが重要なC++のトレーディング、ロボティクス、リアルタイムシステムでのロギング。
  • 高スループットのC++サービスへの非同期構造化ロギングの導入。
  • C++プロセスからPrometheusへアプリケーションメトリクスをエクスポート。
  • Linux、macOS、Windows、BSD、Androidを対象としたC++ロギング。

クイックスタート

  1. 1

    vcpkg などのパッケージマネージャーで Quill をインストールします

    vcpkg install quill
  2. 2

    Homebrew で Quill をインストールします

    brew install quill
  3. 3

    Quickest Setup の例にあるように、C++ コードで simple_logger() を使うと、コンソールまたはファイルにログを出力できます

使う前に知っておきたいこと

  • C++17 以降が必要です。

トピック

よくある質問

quill とは?
フォーマットとI/Oをバックグラウンドスレッドに委ねる、超低レイテンシの非同期C++17ロギング・メトリクスライブラリ。 Quillは、レイテンシが重要なアプリケーションスレッドでフォーマットやI/Oを行わないC++17ロギングライブラリです。呼び出し元スレッドでは、ログ引数をスレッドごとのロックフリーキューにエンコードするだけで、専用のバックエンドワーカーが後からデコードし、{fmt}でフォーマットして設定済みの出力先に書き込みます。
quill は無料で使えますか?ライセンスは?
quill は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
quill は今もメンテナンスされていますか?
活発にメンテナンス中。quill の最終コミットは 2026年10月17日 です。
quill は何に使えますか?
レイテンシが重要なC++のトレーディング、ロボティクス、リアルタイムシステムでのロギング。 高スループットのC++サービスへの非同期構造化ロギングの導入。 C++プロセスからPrometheusへアプリケーションメトリクスをエクスポート。 Linux、macOS、Windows、BSD、Androidを対象としたC++ロギング。
quill のインストール方法は?
vcpkg などのパッケージマネージャーで Quill をインストールします: vcpkg install quill Homebrew で Quill をインストールします: brew install quill Quickest Setup の例にあるように、C++ コードで simple_logger() を使うと、コンソールまたはファイルにログを出力できます
quill はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/odygrd/quill

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト