5

Boost Loggingライブラリの使用に問題があります。自分のログクラスを使用して、ロガーにフォーマッターまたは宛先を追加すると、その宛先またはフォーマッターを変更できません。

ブーストログオブジェクトの宛先またはフォーマッタを変更する方法を知っている人はいますか?

私が持っているシナリオでは、サーバーコンポーネントが処理するリクエストごとに異なる宛先(ファイル名)が必要なので、それらを柔軟に変更する方法が必要です。また、異なるスレッドから同時にログを記録し、各ログには、簡単に追加できる独自の宛先が必要であるという事実もあります。

マクロのロギングオブジェクトが実際にアプリグローバルであるという事実は、これを実際には助けません。

誰かが、boost :: loggingからロガーに宛先を追加/削除する柔軟な方法を作成する方法についてのガイダンスを教えてもらえますか?

4

1 に答える 1

2

わかりました、これが私が試みることです。それはあなたのために働くかもしれません。スレッドローカルロガーを使用したいのに、ロギングライブラリがグローバルロガー用に調整されているように見えます。たとえば、を分析して、オンデマンドで(つまり直接)ロガーを作成する方法を調べますBOOST_DECLARE_LOGstd::map<int, Logger>次に、 thread-idを特定のロガーにマップするために使用するを宣言できます。おそらく、クライアントコードに対してこれを透過的に処理する独自のラッパークラスを作成できます。次に、独自のロギングレイヤーを使用してロギングし、必要に応じてスレッド固有のロガーを作成します。リクエストの終了後にそれらを削除する必要がある場合は、これを行うためのメソッドを追加できます。

お役に立てれば!

于 2010-12-17T09:56:34.380 に答える