C++のロギングライブラリのメモ
昨年末の話になりますが、ぼーっとredditのC++カテゴリを見ていたらlwlogというライブラリの話題が出てました。 「spdlogより速い」っていうのが売りのようです。確かに速そう。 www.reddit.com
ちょうど良いのでロギングライブラリの個人的なメモをしておこうと思います。
boost log
C++の定番ライブラリboostのloggingライブラリです。 機能豊富ですが、残念ながら大分遅いです。 C++ 的に遅いのはかなり致命的だなぁと思うのであまり積極的には使いません。 boost以外使えない場合とかあるのでそういう時に重宝します。
spdlog
多分boost logを含めた昔からあるloggingライブラリを駆逐する高速処理のロギングライブラリでした。 今となってはもっと速いライブラリが出てきてしまったので、処理速度では残念な感じです。 ただ対応している出力先が豊富なので、巨大なシステムで、ログをどこかに飛ばすみたいな用途だとspdlogは便利かもしれません。
設定ファイルでsinkの構成を定義できる guangie88/spdlog_setup というライブラリがあるのが重宝します。 github.com
quill
私としては最近一番使っているロギングライブラリになります。
- 最低限の機能がある
- 簡単に使える
- 高速に動作する
- ログファイルがテキストで扱いやすい
- Conanパッケージがある といったところが気に入ってます。
ログローテートなどはあまり凝ったことはできませんので、そういうのを求めるならspdlogなのかなぁと思います。
Nanolog
quillよりもちょっとだけ速いロギングライブラリ。 いろいろ野心的で、好奇心をくすぐられる部分も多いのですが、以下の点が個人的には大きなデメリットです。
- Linuxのみに対応
- ログファイルが独自バイナリで閲覧時に専用コマンドでテキスト化
quillよりも圧倒的に速いとかなら考えるのですが、ベンチマーク見ると10%も変わらないです。 今のところ積極的に使う理由が無いなぁと。
lwlog
期待の新星。 sinkの設定をcompile timeで構成できるのが速そう。
今のところVisual C++でのビルドが前提になってしまっているけれど、CMake対応してくれるみたいです。 手軽に使えるようになったら是非使ってみたい。