2013-06-25 38 views
0

我使用log4net的爲C#SDK,並請參閱下面的代碼片段(範例)對我現有的實現(SDK和客戶端)。C#log4net的記錄器工廠

我想使記錄在SDK可插拔。

的SDK在內部使用log4net的,但也沒有辦法爲客戶端它替換到其他日誌框架。

我想有一個ILogger接口,讓客戶端傢伙來選擇是否將其覆蓋。

能否請您與您的expertize幫助爲如何去這在C#2.0框架/ Visual Studio 2005中,而不會影響SDK的現有用戶?

如何寫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

工作,我會問你決定做一個8歲的框架開發? –

回答