7

log4cxx (RollingFile アペンダー) を使用していくつかのファイルにログを記録する C++ アプリケーションがあります。C# で記述された別のモジュールから同時に同じファイルにログインしたい。そのため、同じファイルを使用するように log4net を構成しましたが、新しいメッセージを取得できません。C++ ログを無効にすると、C# メッセージが表示されます。だから私はそれがロックの問題だと思い、log4cxxにファイルをロックしないように指示する構成オプションを探しました。log4netのMinimalLockモデルに入りましたが、log4cxxで何も見つかりませんでした...それができるかどうか、そしてどのように知っていますか?

前もって感謝します、

エルネスト・カレン

4

2 に答える 2

4

2 つの異なるプロセスが同じファイルにログを記録しようとしている限り、使用する構成に関係なく、並行性と競合の問題が発生する可能性があると思います。

両方のプロセスから 3 番目の中央の場所にログ イベントを送信することを検討する必要があります。log4net のRemotingAppenderを見てください。

于 2008-10-21T12:38:04.437 に答える
1

質問がかなり古い (そして回答済みとしてマークされている) 場合でも、おそらくプロジェクトは既に終了しています。

log4net と log4cxx は、お互いを認識しない別個のログ フレームワークであるため、同じファイルに書き込むように構成することはできません。フレームワークの 1 つだけが書き込み用にファイルを開きます。

同様の状況 (log4net を使用した新しい c# モジュールとカスタム ロギングを使用する従来の C++ アプリケーション) で行ったことは、トレースを古いロギング フレームワークに転送するカスタム log4net アペンダーを作成することです。私が関わったプロジェクトでは、古い C++ コードには、カスタム アペンダーが使用するログ メッセージを書き込むための Windows COM インターフェイスがありました。

もう 1 つの方法は、C++/CLI を使用してカスタム アペンダーを作成することです。

于 2009-02-16T22:35:00.987 に答える