Log4cxx множественный выход - PullRequest
2 голосов
/ 13 декабря 2011
  • У меня есть реализация log4cxx в utility.dll.Эта dll используется application1.dll и application2.dll

  • Application1 определяет имя файла журнала как "c: \ application1 \ applog.log";Application2 определяет имя файла журнала как «c: \ application2 \ applog.log».

Если я запускаю оба приложения по отдельности, журналы создаются в соответствующих файлах должным образом.Если я пытаюсь запустить оба приложения одновременно, журналы создаются в файле журнала последнего открытого приложения.

Я открыл приложение1, первые журналы создаются в файле "application1 \ applog.log".В то же время я открыл приложение2.Теперь журналы обоих приложений добавляются в «application2 \ applog.log»

Примечание: оба моих приложения являются dll, действующими как драйверы) Оба действуют как отдельное приложение, мне нужно, чтобы журналы были в разных выходных файлах.Обе библиотеки будут работать под одним и тем же exe-файлом.

Как создать одинаковую реализацию log4cxx для входа в разные файлы журнала для одного приложения?

1 Ответ

1 голос
/ 08 мая 2013

У меня была похожая ситуация, когда мое приложение и 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");

Предполагается, что вы используете постоянную конфигурацию. 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
...