2011-12-13 2 views
2
  • log4cxx 구현이 utility.dll에 있습니다. 이 DLL은 application1.dll 및 application2.dll에서 사용됩니다.Log4cxx 다중 출력

  • Application1은 로그 파일 이름을 "c : \ application1 \ applog.log"로 정의합니다. Application2는 로그 파일 이름을 "c : \ application2 \ applog.log"로 정의합니다.

두 응용 프로그램을 별도로 실행하면 로그가 해당 파일에 올바르게 작성됩니다. 두 응용 프로그램을 동시에 실행하려고하면 최신 열린 응용 프로그램의 로그 파일에 로그가 만들어집니다.

"application1 \ applog.log"파일에서 application1을 처음 열었습니다. 동시에 나는 Application2를 열었다. 이제 두 응용 프로그램의 로그가 "application2 \ applog.log"에 추가됩니다.

참고 : 두 응용 프로그램 모두 드라이버처럼 작동하는 dll입니다. 둘 다 별도의 응용 프로그램으로 작동합니다. 로그가 서로 다른 출력 파일에 있어야합니다. 두 dll은 같은 exe 실행됩니다.

동일한 log4cxx 구현으로 애플리케이션마다 다른 로그 파일에 로그인하는 방법은 무엇입니까?

답변

1

내 응용 프로그램과 DLL이 같은 파일에 로깅하는 것과 비슷한 상황이있었습니다. 이것은 교육받은 추측 일 뿐이지 만 dll 및 app에서 로거 이름을 변경해보십시오. 당신이 통조림 구성을 사용하는 가정


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

// in application1.dll 
const log4cxx::LoggerPtr logger1 log4cxx::Logger::getLogger("ABC")); 
log4cxx::PropertyConfigurator::configure("./application1.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