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

假设您使用的是固定配置。application2.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
于 2013-05-08T17:50:49.963 回答