2012-07-03 2 views
0

저는 NServiceBus 2.6을 사용합니다.NServiceBus.Host.exe Windows 서비스 log4net 문제

나는 내 엔드 포인트의 코드에 의해 & 초기화 로깅 기능을 log4net.config 파일을 사용 : 나는 NServiceBus.Host.exe을 실행하면

SetLoggingLibrary.Log4Net(() => 
     XmlConfigurator.ConfigureAndWatch(new FileInfo("log4net.config"))); 

가 정상적으로 잘 기록,하지만 난 Windows 서비스로 배포 할 때/install을 사용하면 더 이상 아무것도 기록되지 않습니다.

내가 코드 기반의 방법을 사용하는 경우 그것은 작동합니다

SetLoggingLibrary.Log4Net<RollingFileAppender>(...) 

어떤 아이디어가 왜 ...?

+0

서비스를 실행하는 계정이에 대한 적절한 권한을 가지고 있는가 파일? 또한이 코드는 정확히 어디에 구현되어 있습니까 (어떤 인터페이스를 구현하고 있습니까?). –

+0

안녕하세요, 아담, 지연에 대한 죄송합니다. 앞서 말했듯이 간단히 "AppDomain.CurrentDomain.BaseDirectory"를 추가하면 정상적으로 작동합니다. 어쨌든 디버그에서는 트릭하지 않고 내 샘플은 기록되지만 릴리스에서는 나타나지 않는 것으로 보입니다. 간단한 엔드 포인트로 처음부터 다시 시작하여 작동하는 제품과 그렇지 않은 제품을 확인한 후 다시 게시 할 것입니다. 어쨌든 관심과 성원에 감사드립니다. – Aszan

답변

1

프로세스를 Windows 서비스로 실행하면 기본적으로 현재 디렉토리를 바이너리가있는 위치로 설정하지 않습니다. 이것은 "log4net.config"를 찾을 때 실제로 c : \ windows \ system32에서 검색한다는 것을 의미합니다.

System.IO.Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory); 

하거나, 이런 식으로 뭔가에 코드를 수정 :

은 (SetLoggingLibrary가 호출되기 전에)이 시도

SetLoggingLibrary.Log4Net(() => 
    XmlConfigurator.ConfigureAndWatch(new FileInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log4net.config")))); 
+0

고마워, 나는 두 번째 것을 사용하고 잘 작동한다! – Aszan