2012-06-30 5 views
1

나는 클래스 라이브러리가있는 핵심 dll을 개발 중이다. log4net을 사용하여 예외 로깅을 사용하고자한다. 내가 class4 라이브러리를 테스트 할 때 log4net.However에 대한 설정을 제공하는 클래스 라이브러리에 app.config 파일이 있습니다. log4net은 로그 파일을 생성 할 때까지 app.config를 호출 프로젝트에 추가합니다. log4net.ILog logger = log4net.LogManager.GetLogger (typeof (ErrorHandler)) 여기서 ErrorHandler는 클래스 이름 인 Log4net.ILog 클래스의 assemblyinfo.cs 클래스에 [assembly : log4net.Config.XmlConfigurator (Watch = true)]를 추가했습니다. log4net의 호출 함수가 처리되는 클래스 라이브러리의 클래스입니다. 무엇이 잘못 될지에 대한 아이디어가 있습니까?log4net 설정 설정

두 번째로, 필자가 원하는 것은 내 dll 사용자가 로그를 만들려는 위치와 이벤트 뷰어에서 로그를 만들지, app.config에서 로그 파일을 만들지를 지정하는 것입니다. 그들은 log4net의 다른 설정을 처리하지 않습니다.

첫 번째 문제와 두 번째 문제에 대한 제안 사항이나 코드 조각은 무엇입니까?

답변

1

.Net 응용 프로그램에 대해 "기본"app.config 만 활성화됩니다. 라이브러리 설정 파일은 무시됩니다. 기본 설정 파일로 설정을 전송하거나 log4net에 대해 외부 설정 파일을 사용하십시오. 당신은 (당신이 log4net.config 전화 가정)과 같은 예를 들어 다음을 구성 번째에 관해서는

<?xml version="1.0" encoding="utf-8" ?> 
<log4net> 
    <appender name="YourAppender" type="..." > 
     .... 
    </appender> 
    <root> 
     <level value="ALL" /> 
     <appender-ref ref="YourAppender" /> 
    </root> 
</log4net> 

:

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

이 설정 파일의 구조가 다른 비트가 있습니다 문제 : 이것이 얼마나 유연해야하는지 잘 모르겠습니다. 파일 appender에서 이벤트 로그 appender로 전환하는 것입니까? 대답에 따라 두 가지 구성 파일 (예 : file.log4net 및 eventlog.log4net)을 준비하고 필요에 따라 구성을 읽어야합니다 (이 경우 특성을 사용할 수 없습니다 : Configure() 메서드를 직접 호출합니다). 또는 요구 사항이 더 복잡한 경우 log4net programatically을 구성 할 수도 있습니다.