2
  • utility.dll に log4cxx を実装しています。この dll は、application1.dll および application2.dll によって使用されます。

  • Application1 は、ログ ファイル名を「c:\application1\applog.log」と定義します。Application2 は、ログ ファイル名を「c:\application2\applog.log」と定義します。

両方のアプリケーションを別々に実行すると、対応するファイルにログが正しく作成されます。両方のアプリケーションを同時に実行しようとすると、最後に開いたアプリケーションのログ ファイルにログが作成されます。

application1 を開くと、最初のログが「application1\applog.log」ファイルに作成されます。同時に Application2 を開きました。これで、両方のアプリケーションのログが「application2\applog.log」に追加されます

注: 私のアプリケーションは両方ともドライバーのように動作する dll です) 両方とも別のアプリケーションとして動作します。異なる出力ファイルにログを記録する必要があります。両方の dll が同じ exe の下で実行されます。

アプリケーションごとに異なるログ ファイルにログインするために同じ log4cxx 実装を作成する方法は?

4

1 に答える 1

1

アプリとdllが同じファイルにログを記録している同様の状況がありました。これは経験に基づいた推測にすぎませんが、DLL とアプリでロガーの名前を変更してみてください。

// in application1.dll
const log4cxx::LoggerPtr logger1  log4cxx::Logger::getLogger("ABC")); 
log4cxx::PropertyConfigurator::configure("./application1.config");

// in application2.dll
const log4cxx::LoggerPtr logger2  log4cxx::Logger::getLogger("ABC")); 
log4cxx::PropertyConfigurator::configure("./application2.config");

既定の構成を使用していると仮定します。log4j.appender.File.File=applicagtion1.config と application2.config は、行を除いて同一である可能性があります

application1.config で

log4j.appender.File.File=logs/application1.logs

およびapplication2.configで

log4j.appender.File.File=logs/application2.logs
于 2013-05-08T17:50:49.963 に答える