2011-12-13 62 views
2
  • 我在utility.dll中有log4cxx實現。這個DLL由application1.dll和application2.dll使用Log4cxx多輸出

  • Application1定義日誌文件名爲「c:\ application1 \ applog.log」; Application2將日誌文件名稱定義爲「c:\ application2 \ applog.log」。

如果我單獨運行這兩個應用程序,則會在相應的文件中正確創建日誌。如果我嘗試同時運行這兩個應用程序,則會在最新打開的應用程序的日誌文件中創建日誌。

我已經打開application1第一個日誌是在「application1 \ applog.log」文件中創建的。同時我打開了Application2。現在這兩個應用程序的日誌都附加在「application2 \ applog.log」中

注意:我的兩個應用程序都是dll,像驅動程序一樣工作)兩者都充當獨立的應用程序,我需要將日誌記錄到不同的輸出文件中。這兩個dll都將在同一個exe下運行。

如何使相同的log4cxx實現爲每個應用程序登錄不同的日誌文件?

回答

1

我有一個類似的情況,我的應用程序和dll登錄到同一個文件。這只是一個受過教育的猜測,但請嘗試在dll和app中更改記錄器的名稱。

// 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"); 

假設你使用的是罐裝的配置。 applicagtion1.config和application2.config可能是除了log4j.appender.File.File=

在application1.config

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

和application2.config相同

log4j.appender.File.File=logs/application2.logs