問題タブ [boost-logging]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - ロギングのブースト-宛先とフォーマッター
Boost Loggingライブラリの使用に問題があります。自分のログクラスを使用して、ロガーにフォーマッターまたは宛先を追加すると、その宛先またはフォーマッターを変更できません。
ブーストログオブジェクトの宛先またはフォーマッタを変更する方法を知っている人はいますか?
私が持っているシナリオでは、サーバーコンポーネントが処理するリクエストごとに異なる宛先(ファイル名)が必要なので、それらを柔軟に変更する方法が必要です。また、異なるスレッドから同時にログを記録し、各ログには、簡単に追加できる独自の宛先が必要であるという事実もあります。
マクロのロギングオブジェクトが実際にアプリグローバルであるという事実は、これを実際には助けません。
誰かが、boost :: loggingからロガーに宛先を追加/削除する柔軟な方法を作成する方法についてのガイダンスを教えてもらえますか?
c++ - constメンバー関数からのクラスごとのboost::log::sources::loggerの使用
ドキュメントの basic_logger の例のように、クラスごとにログ ソースが必要です
これは機能しますが、次のように const メンバー関数から何かをログに記録すると、constness について不平を言うコンパイラ エラーが発生します。
この例Test::test2
では、その const とm_logger
そうでないため、コンパイル エラーが発生します。Test::test1
正常に動作します。
などを使わずconst_cast
にきれいな方法でこれを修正するにはどうすればよいですか?mutable
c++ - 「CRITICAL_SECTION」が原因で、boost_logging がコンパイルに失敗します: あいまいなシンボル
プロジェクトにboost_loggingを使用しています。
ファイルの 1 つで、ロギング機能を使用するだけです
LDBG_ << "something"
が、コンパイルに継ぎ目がなく、次のエラーが発生します。
奇妙な部分は、これが私の PC の 1 つで正常に機能しているが、他の PC では機能していないことです。そのため、winbase.h インクルードが異なる可能性があります。
編集:
LDBG_ ログの定義方法は次のとおりです。
c++ - Boost.Log と Boost.Log v2 の比較
現在、アンマネージ C++ 用のログ フレームワークをいくつか評価しています。
私の質問は、Boost.Log と Boost.Log v2 の違いは何ですか?
アピが違う?プロジェクトで Boost.Log v2 を使用しても安全ですか? それとも Boost.Log 1.1 を使用するべきですか?
Boost に受け入れられるのはいつですか? それは将来的に大きな変化を被る可能性がありますか?
c++ - C++ Boost Logging: ログを圧縮する方法は?
Boost Logging ライブラリによって生成されたログを圧縮する必要があります。私は2つのアプローチを見ます:
- オンザフライでログを BZip または GZip に圧縮 -できれば
- ローテーション時にログを圧縮します (ログのコピーを作成し、zip します)。
これを実装するにはどうすればよいですか?
c++ - Boost Logging オブジェクトの << 演算子のオーバーロード
したがって、すべてのロギング目的で Boost.Log を使用したいと考えています。私は現在、ヘルパー メソッドのインスタンス化と設定に必要なすべての操作を含むクラスを作成しています。
問題は、 << 演算子をオーバーロードして cout の方法で使用したいことです。さまざまな引数の型を持つために使用できるようにしたいのが最大の問題のようです。
これが私が試したものです:
ただし、これはロジックに少し欠陥があることを理解しています。複数の引数を << に渡すには、再帰的である必要があります。しかし、ブーストログでこれを行う方法について少し混乱しています。
便利なブースト マクロの代わりに、カスタム シンクを使用してログ システムを定義する必要がありますか? もしそうなら、これは std::ostream の戻り値をサポートしますか? これは、戻り値とストリームへの入力値になると思います。
c++ - ブースト ログを手動でフラッシュするにはどうすればよいですか?
ブースト 1.54.0 で Boost.Log を使用して、アプリケーションの実行可能なオプションであるかどうかを確認しています。一般に、バッファリングに問題はないので、auto_flush などをオンにするつもりはありません...しかし、呼び出す前にログに記録されたメッセージfork()
が重複していることに気付きました。それらはバッファリングされるため、プロセスイメージがコピーされるとバッファが複製され、最終的に両方のプロセスがバッファコピーをログファイルに書き込みます...
fork()
したがって、基本的には、メッセージがまだメモリに残っていないことを確認するために、呼び出す直前に、ログを 1 回だけ手動でフラッシュしたいと思います。つまり、ブースト ログで使用できる 、 、 などfflush()
に.flush()
似たものを探しています。<< flush
ログを使用<< flush
してみましたが、それでも重複したメッセージが表示されるため、フラッシュが原因で重複が他の問題によって引き起こされているのか、それとも何らかの形でサイレントに無視されているのかは 100% わかりません<< flush
...
編集:
私は周りを見回していて、ブーストログがフォークセーフではないことがわかりました. したがって、親プロセスと子プロセスで同じログを使用しようとしていないことを付け加えておきます。私は2つの分岐シナリオを持っています.1つは、親がすぐに終了し、子が継続する(安全であるため)、もう1つは、子が独自の別のログファイルを開く必要があるため、これも安全である必要があります...しかし、私はログ ファイル シンクを閉じてから (別のファイルで) 新しいものを開く方法を理解する必要があります。シンクを閉じることも、フラッシュを強制する方法かもしれないと思います...?
boost - Gloa で複数のファイルからブースト ログを使用する方法
使用できるように、アプリケーション全体でグローバル ロガーを作成しようとしています。
さまざまなクラス (さまざまなファイルに存在する) のログのグローバル ロガーを取得します。
私は、boost.org にリストされている例に従うようにしています (以下にリストされています)。しかし、うまくいかないようです。私が従うことができる例や、うまくいく場合に私がする必要があることを誰かが知っていましたか? ありがとう。
http://www.boost.org/doc/libs/1_54_0/libs/log/doc/html/log/detailed/sources.html