2013-06-25 7 views
0

C# SDK에 log4net을 사용하고 있으며 기존 구현 (SDK 및 클라이언트)에 대해서는 다음 코드 스 니펫 (예)을 참조하십시오.C# log4net logger factory

SDK에 로그인 가능하도록 설정하려고합니다.

SDK는 내부적으로 log4net을 사용하지만 클라이언트가 다른 로깅 프레임 워크로 교체 할 방법이 없습니다.

나는 ILogger 인터페이스를 사용하여 클라이언트가이를 무시할지 선택할 수있게하고 싶습니다.

SDK의 기존 사용자에게 영향을주지 않으면 서 C# 2.0 Framework/Visual Studio 2005에서이 문제를 해결하는 방법에 대해 전문가의 도움을받을 수 있습니까?

ILog 인터페이스를 작성하고 재정의를 사용하는 방법은 무엇입니까?

도와주세요.

// SDK Code Snippet 
// LogManagerWrapper 
using System; 
using log4net; 

namespace SDK 
{ 
    public static class LogManagerWrapper 
    { 
     public static ILog GetLogger(Type type) 
     { 
      if (LogManager.GetCurrentLoggers().Length == 0) 
      { 
       LoadConfig(); 
      } 
      return LogManager.GetLogger(type); 
     } 

     private static void LoadConfig() 
     { 
      log4net.Config.XmlConfigurator.Configure(); 
     } 
    } 
} 


// Client Code Snippet 

using System; 
using log4net; 
using SDK; 

namespace Client 
{ 
    class Program 
    { 
     private static readonly ILog logger = LogManagerWrapper.GetLogger(typeof(Program)); 

     private void Method() 
     { 
      try 
      { 
       Random rndm = new Random(); 
       int number = rndm.Next(1000); 
       decimal Money = 100/number; 
       decimal Cash = 100/Money; 
      } 
      catch(Exception ex) 
      { 
       logger.Debug(ex.Message); 
      } 
     } 

     static void Main() 
     { 
      logger.Info("Start Time: " + DateTime.Now.ToString("dddd, MMMM dd, yyyy h:mm:ss tt")); 
      Program prgm = new Program(); 
      prgm.Method(); 
      logger.Info("End Time: " + DateTime.Now.ToString("dddd, MMMM dd, yyyy h:mm:ss tt")); 
      Console.WriteLine("Press any key to exit."); 
      Console.ReadKey(); 
     } 
    } 
} 

// Client App.config: 

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSections> 
    <log4net> 
    <appender name="FileAppender" type="log4net.Appender.FileAppender"> 
     <file value="ClientLog.log" /> 
     <appendToFile value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] %message%newline" /> 
     </layout> 
    </appender> 
    <root> 
     <level value="DEBUG" /> 
     <appender-ref ref="FileAppender" /> 
    </root> 
    </log4net> 
</configuration> 
+0

2005 VS 나이와 함께 작동합니다 이전 버전을 얻을 수 있다고 생각? –

답변

0

일반적인 로깅 프레임 워크가 이미 수행하고있는 작업을 수행하려고합니까?

http://netcommon.sourceforge.net/

난 당신이 내가 8 살짜리 프레임 워크 개발을 할 당신의 결정에 의문을 수