2012-11-23 1 views
0

구성 파일을 찾을 위치를 내 응용 프로그램에 알린 다음 응용 프로그램을 시작할 때 XmlConfigurator.Configure()을 호출하여 외부 구성 파일로 작업하는 log4net을 가지고 있습니다.log4net은 어셈블리 속성을 기반으로 작동하지 않습니다

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    ... 
    <log4net configSource="Log4Net.config" /> 

이 작동하지만, 지금 내가 이것을 달성하기 위해 어셈블리 특성을 사용할 수 있어야 문서에 따르면, 변화를보고 싶어, 또한 의미하는 나는 더 이상 XmlConfigurator.Configure()를 호출 할 필요는 없습니다. 그래서, 주요 응용 프로그램에 대한있는 AssemblyInfo.cs이 추가 (또한 프로젝트가 참조) :

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] 

문제는이 전혀 아무것도하지 않는다. XmlConfigurator.Configure()에 대한 호출을 제거하면 로깅이 작동하지 않고 로깅이 시작되지 않습니다. 이러한 속성은 차이를 만드는 것처럼 보이지 않습니다. 그래서 나는 파일이 전혀 작동하는 것을 보지 못합니다.

누구든지 조언 할 수 있습니까?

+1

프로젝트가 여러 어셈블리에 걸쳐 있습니까? 또한 설정 파일에서 디버그를 활성화하면'log4net' 디버그 출력을 볼 수 있습니다. – J0HN

+0

이것은 솔루션의 일부인 다른 라이브러리 어셈블리를 참조하는 winforms 앱입니다. 이것들은 모두 속성을 가져야합니까? –

+0

로깅을 수행하는 하나 또는 두 개의 어셈블리에 특성을 추가하여 도움이되는지 확인해도 문제가 없습니다. 확실하게 말할 수는 없지만 동일한 특성 (문자 그대로 * 같은 로그 파일 이름도 포함 함)을 사용했습니다. 그러나 로깅은 해당 특성을 가진 단일 어셈블리에 캡슐화되었습니다. – J0HN

답변

0

Sussed it.

첫 번째 로깅 메시지가 다른 어셈블리에서 왔기 때문입니다. log4net docs이 말하는 것처럼 :

는 가능한 한 빨리 응용 프로그램 중에 로깅 호출을 시작 업을하는 것이 필수적이며, 외부 어셈블리를로드 불려 확실히 전에.

관련 문제