このプロジェクトについて
QuillはC++17以降向けの非同期ロギングおよびメトリクスライブラリであり、性能が重要でレイテンシに敏感なアプリケーションを対象としています。その中核設計は、フォーマットとI/Oを呼び出しスレッドから遠ざけることにあります。ログ引数はフロントエンドでエンコードされ、専用のバックエンドワーカーによって処理されるため、コストの高いフォーマット処理がホットパスから離れた場所で行われます。
READMEに記載されている主な機能:
- 非同期処理: バックグラウンドスレッドがフォーマットとI/Oを処理し、アプリケーションスレッドの応答性を維持します。
- メトリクス発行: 事前登録されたメトリクスサンプルを同じ非同期バックエンドを通じて送信できます。同梱のPrometheusシンクはカウンター、ゲージ、ヒストグラム、サマリーを処理し、カスタムシンクはサンプルをStatsD、OpenTelemetry、その他のインプロセスコレクターにルーティングできます。
- 最小限のヘッダーフットプリント: フロントエンドにはLogger.hとLogMacros.hのみが必要で、バックエンドは単一の.cppファイル経由でインクルードされるため、他の翻訳単位にバックエンドコードが注入されるのを避けられます。
- コンパイル時オプション: ログレベルはコンパイル時に除去でき、フロントエンドのキューとメモリポリシーはコンパイル時に調整できます。
- 実行時設定: バックエンドのアイドル動作、CPUアフィニティ、バッファリング、タイムスタンプ処理、フラッシュ、コールバックを設定でき、ロガーは組み込みまたはカスタムのシンクとシンクごとのフィルターから構成できます。
- タイムスタンプ: rdtsc、chrono、またはカスタムクロックをサポートし、スレッド間のタイムスタンプ比較と、遅延したプロデューサー向けの設定可能な猶予ウィンドウを備えます。
- シンクと出力: コンソール(色付き)、ファイル(ローテーション付き)、JSON、およびカスタムシンク。
- 追加機能: リングバッファによるバックトレースロギング、ログフィルタリング、JSON構造化ロギング、マップドダイアグノスティックコンテキスト(MDC)、レート制限マクロ、監視付きの設定可能な有界/無界およびブロッキング/ドロッピングキューモード、シグナルハンドラーによるクラッシュ処理、Linuxでのヒュージページサポート、Windowsでのワイド文字サポート、例外を使用しないビルドオプション。
- {fmt}ライブラリに基づく型安全なAPI。
インストールは、vcpkg、Conan、Homebrew、Meson WrapDB、Conda、Bzlmod、xmake、nix、build2など、いくつかのパッケージマネージャーを通じて利用できます。クイックスタートの方法では、コンソールまたはファイル出力にsimple_logger()を使用し、詳細なセットアップではBackendおよびFrontend APIを公開して、シンク、ロガー、フォーマッターを明示的に制御できます。マクロを使わない関数APIも提供されており、マクロAPIよりやや遅いと説明されています。
READMEには、数値、大きな文字列、複雑な型のロギングなどのシナリオで、1スレッドおよび4スレッドの場合にQuillを他のC++ロギングライブラリと比較したベンチマーク表が含まれています。これらの結果は特定のシステム構成とベンチマーク手法で提示されており、独立した検証ではなくプロジェクト自身の測定値として読むべきです。
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.