2010-12-19 6 views
2

私はC++で書いているマルチスレッドサーバアプリケーションを持っていますので、良いとかなり効率的なロギングシステムを実装する必要があります。効率的には、どのような量のログが設定されていても、アプリケーションは絶えず停止するべきではありません。したがって、ログファイルの作成専用のスレッドがあることが望ましいです。multi = threadedサーバコンポーネント用のログ

サーバコンポーネントがそれ自身のファイルで処理する各リクエストをログに記録したい場合、ローテーションシステムを使用して、しきい値より古いファイルを削除します。リクエストは2つのスレッドによって処理されます.1つは変換作業を行い、他のすべてのアクション(データベースの取得、計算など)を行うスレッドプール(BOOSTスレッドプール)の一部であるワーカースレッドです。したがって、ロギングはスレッドセーフでなければならず、レベル用に設定し、各Loggerクラスインスタンス(ライブラリを実装する独自のロガー)に新しいファイル名を受け入れる必要があります。新しいLoggerインスタンスが特定の要求に対して作成されるようにします。

私の最終的な質問は次のとおりです。どのログライブラリを使用すれば、リクエストごとに新しいログファイルを作成でき、ログレベルを設定できるのですか? (IE:エラー、警告、クリティカルなど)

自分ですべてを実装する必要がありますか? (ログはオプションではありません)

私はBoost :: Logging v2を見てきました。すべての状態(レベル、ファイル)を保持しているメインのロガーオブジェクトはグローバルなので、リクエストごとにファイルを変更することはできません。

私はtemplog.orgを見ましたが、私はコンパイルすることさえできません。私が何を含むか、どの参照を設定しても、それはtemplog名前空間またはそのクラスのどれも見つけることができません。

答えて

2

Apache log4cxxをご覧ください。それは素晴らしいロギングライブラリーです!

+0

thatsは.NETログライブラリです。私はC++ライブラリの後です。 –

+0

.netではなく、Java、C++、PHPでもよくあります。良く見える;-) – VdesmedT

+0

私はあなたのリンクをlog4netの代わりにlog4cxxに変更しました。私は同意する、それは素晴らしい図書館だ。私はいくつかのプロジェクトでそれを使用しました。 –