2013-04-02 2 views
2

다른 응용 프로그램에 대한 제 3 자 dll로 사용할 DLL을 설정 중입니다. 이 dll은 자체 로깅을 사용하여 외부 응용 프로그램이 아무 것도 설정하지 않아도되도록합니다 (나는 우리가하는 것과 동일한 로깅을 사용한다고 생각하지 않습니다). 나는 그것이 최선의 해결책이 아닐지도 모른다고 읽었지 만 주어진 과제이다. 우리는 이것과 함께 log4net을 사용하려고합니다. 여기에 다른 질문 몇 가지를 살펴 봤는데 코드를 통해 구성 할 수 있다고 언급했지만 주요 문제는 log4net을 구성하는 코드에 명확한 컷 엔트리 포인트가 없다는 것입니다. 내가 dll을 자체적으로 구성하는 것을 포기하고 DLL의 로깅을 구성하는 보조 응용 프로그램에 의해 호출되는 메서드가 있거나이 문제를 해결할 더 좋은 방법이 있는지 궁금합니다. 어떤 입력이라도 많이 감사 할 것입니다.dll에서 log4net 로그인 구성

+0

xml 구성 파일을 사용하여 log4net을 여러 가지 방법으로 구성 할 수 있습니다. 시작 방법을 통해 로깅 설정을 구성하거나 xml 설정 파일을 통해 구성을 설정해야합니다. –

+0

명확히하십시오 - DLL의 클래스에서 사용하기 위해 log4net을 구성하는 샘플 코드를 원하십니까? 아니면 DLL에서이 샘플 코드를 호출하는 위치/방법에 대한 조언을 원하십니까? – PaulF

+0

@ PaululF 예제 코드가 필요하지 않지만 현재 설정 및 작동하고 있지만 솔루션에 대한 큰 팬이 아닙니다. 기본적으로 나는이 있습니다 '개인 무효의 ConfigureLogging() { XmlConfigurator.Configure (새 System.IO.FileInfo (및 String.format를 (@ "{0} \ {1}", System.Environment.CurrentDirectory, LogConfigurationFileName))); }' 이것은 로깅이 어떤 설정 파일을 사용 하는지를 알 수 있도록 dll의 진입 점에서 호출됩니다. 나는 이것보다 더 나은 해결책을 찾기를 희망했다. – Thomas

답변

5

프로그래밍 방식으로 log4net을 구성 할 수 있습니다. 아마도이 코드를 DLL의 생성자에 추가하십시오.

if (!log4net.LogManager.GetRepository().Configured) 
{ 
    // my DLL is referenced by web service applications to log SOAP requests before 
    // execution is passed to the web method itself, so I load the log4net.config 
    // file that resides in the web application root folder 
    var configFileDirectory = (new DirectoryInfo(TraceExtension.AssemblyDirectory)).Parent; // not the bin folder but up one level 
    var configFile = new FileInfo(configFileDirectory.FullName + "\\log4net.config"); 

    if (!configFile.Exists) 
    { 
     throw new FileLoadException(String.Format("The configuration file {0} does not exist", configFile)); 
    } 

    log4net.Config.XmlConfigurator.Configure(configFile); 
} 
+0

감사합니다. 이것은 결국 질문을 업데이트 한 적이 없기 때문에 결국 우리가 끝내게 된 것입니다. – Thomas