このプロジェクトについて

spdlogは、速度、柔軟性、使いやすさを重視して設計された高性能C++ロギングライブラリです。ヘッダオンリーライブラリとして使用することも、ビルド時間を短縮するためにコンパイルして使用することもでき、C++11コンパイラのみが必要です。このライブラリはfmtフォーマットライブラリ上に構築されており、位置引数、パディング、配置、カスタム型フォーマッタをサポートする高機能な出力フォーマットを提供します。 主な機能には、同期および非同期ロギングモード、マルチスレッドおよびシングルスレッドロガー、さらにローテーティングログファイル、日次ログファイル、カラー対応コンソール出力、syslog、Windowsイベントログ、Windowsデバッガ出力、Qtウィジェットなどの幅広いログ出力先が含まれます。カスタムシンクを実装して、追加の出力先にライブラリを拡張できます。ログレベルは実行時またはコンパイル時にフィルタリングでき、環境変数やコマンドライン引数からレベルを読み込むこともできます。 このライブラリはバックトレース機能をサポートしており、デバッグメッセージがリングバッファに保存され、必要に応じてダンプできます。エラー発生時に最近のデバッグ出力を表示するのに役立ちます。その他のユーティリティには、登録済みロガーの定期的なフラッシュ、タイミング測定用のストップウォッチサポート、バイナリデータの16進数形式でのロギング、スレッドローカルなキーと値のペアのためのマップ診断コンテキスト(MDC)、ログイベント用のユーザー定義コールバックがあります。カスタムエラーハンドラとファイル開閉イベントハンドラにより、ログ動作をさらに制御できます。 spdlogはクロスプラットフォームであり、Linux、FreeBSD、OpenBSD、Solaris、AIX、Windows(MSVC 2013+、Cygwin)、macOS(Clang 3.5+)、Androidをサポートしています。apt、Homebrew、MacPorts、FreeBSD pkg、dnf、emerge、pacman、zypper、vcpkg、conan、conda、build2など、多数のパッケージマネージャから利用できます。Intel i7-4770 CPUを搭載したUbuntu 64ビットでのベンチマークでは、基本ロギングの同期シングルスレッドスループットは毎秒約570万メッセージであり、非同期モードでは、オーバーランポリシーの下で10スレッド競合時に毎秒最大260万メッセージを達成しています。ドキュメントはプロジェクトWikiで入手できます。