web-dev-qa-db-ja.com

Boost.Logロギングライブラリの使用経験はありますか?

Boost.Log logging library の使用を開始することを検討しています。 Boost.Logを使用している人はいますか?この点であなたの経験を共有してください。

私が検討している他のライブラリは、Apache log4cxx(インストールするのは退屈に思えますが、チームメイトは簡単に始めたいものです)およびPantheios(追加のフロントエンドとバックエンドで動作するため同じ問題です)です。

88
amit

[〜#〜] update [〜#〜]:これが書かれて以来、Boost.Logを独自のカスタムロギングに置き換えました。さまざまな理由で、すべてのプロジェクトのすべてのBoost依存関係を取り除くことにしました。 Boostの使用に問題がない場合、Boost.Logは Klaimの答え で判断すると、依然として有効な選択だと思います。

2010年のBoost.Logでの私の経験は次のとおりです。


Boost.Logをゲームエンジンに正常に統合しましたが、それについて良いことしか話せません。確かに、バージョン2が公式のBoost.Logになる実際のバージョンなので、使用するのは少し早いです。

利用可能なバージョン「1.0」が維持されていないことに注意してください。更新を受信するには、不安定になる可能性のある最新のEdge(トランク)バージョンを使用する必要があります。深刻なプロジェクトでこのバージョンを使用する場合は、これを考慮してください。出血しているEdgeバージョンまたは将来の破損を使用することを恐れていない場合は、それを選択してください。現在の状態のまま使用するのは本当に素晴らしいことです。

私は長い間、log4j/log4cxxの階層型ロギングシステムが優れていると考えていましたが、Boost.Logでそうでないと考えていました。フィルタリングと属性はより柔軟です。

フロントエンド/バックエンドで区切られたシンクの設計により、バックエンドを追加するのが本当に簡単になります。フロントエンドで処理される同期の問題やフィルタリングについて心配する必要はありません。ライブラリには、すでに多くのバックエンド、回転ファイル、コンソール、syslog、Windowsイベントレジスタなども付属しています。

独自のシンクバックエンドを作成しました。 1つはゲーム内コンソールに行き、もう1つはより深刻なイベントの通知システムに行きます。思ったより簡単で、数分で起動して実行できました。

最後になりましたが、メンテナー/開発者も非常に役立ちます。プロジェクトフォーラムで多くのヘルプが得られます。彼は今週末に報告した2つのバグ(そのうちの1つのメジャー)を修正しました:-)

41
Oskar N.

更新:Boost.Logをゲームエンジンシステムに使用していますが、非常に満足しています。高速でスレッドセーフで、必要なときに非常に柔軟です。

Boost.Logは、今年(2013年)にリリースされるすべてのBoostライブラリで提供される予定です。


Boost.Logは、ログシステムをセットアップするために作成されます。ドキュメントを読むと、柔軟性が非常に高いため、思いつく限りのログシステムを構築できます(遠くのコンピューターでのログなど)。

単純なプロジェクトでの使用を容易にするマクロがあります しかし、ロギングを本当に理解し、アプリケーション用の特定のアーキテクチャを構築したい人にとって主に役立つのは、この種類のライブラリだと思います。

パフォーマンスについては、他の(柔軟性の低い)ロギングライブラリに比べて処理速度が遅くなる問題があったことを覚えていますが、ドラフトであり、最初のリリースはまだ公開されていないため、コーディングしていない場合は気にしませんタイムクリティカルなアプリケーション。

最後に、「今」と評価するには単純に「新しい」と思います。これほど柔軟なロギングライブラリは他にありません。多くの人が使用する必要性を感じるかどうかはわかりません。

更新:Boost.Log作成者との最近の電子メール交換により、tat Boost.Logが高速ロギングの優れた代替手段であることを示唆するデータが得られました。

21
Klaim

最近、私が始めていたプロジェクトにロギングシステムを実装することを検討しました。

あなたが言及したように、私はlog4cxxを試してみましたが、実際にインストールするのは非常に面倒です。 VS2012で(他の依存ライブラリを使用して)コンパイルするのに数時間かかり、プロジェクトで使用するとクラッシュしました。確かに、標準ライブラリの不一致で起こっているいくつかの奇妙なことですが、それを理解できませんでした。

それで、log4cppに切り替えて、数分で立ち上がって実行しました。私はそれがエレガントで軽量で、必要なものだと思います。よく知られているlog4j&coと同じ機能を持つという大きな利点があります。あなたのチームワークにとって本当にプラスになるかもしれないロギングシステム(設定ファイルによる設定など)

パフォーマンスに関する限り、メッセージのレベルでロガーがアクティブであるかどうかを確認するために1回の関数呼び出しを行い、次に実際にデータを記録するために1回の関数呼び出しを行います。

いくつかの自家製マクロ(メッセージに[〜#〜] line [〜#〜]&co。を追加する)を使用すると、log4cppは私のプロジェクトで非常に有用であることが証明されました。

残念ながら、私はBoost.Logを試していないので、それについて話すことはできませんが、Boost.Logの方法を使用しないことを選択した場合、このフィードバックが引き続き役立つことを願っています。

7
Mic