2013-06-25 4 views
0

Я использую log4net для C# SDK, и, пожалуйста, обратитесь к следующему фрагменту кода (примеры) для моей существующей реализации (SDK и Client).C# log4net logger factory

Я хочу сделать запись в SDK подключаемой.

SDK внутренне использует log4net, но клиент не может заменить его на другие рамки ведения журнала.

Я хотел бы иметь интерфейс ILogger, чтобы позволить парням-ребятам выбрать, стоит ли их переопределять.

Не могли бы вы помочь с вашей экспертизой относительно того, как это сделать в C# 2.0 Framework/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-летнюю рамке? –

ответ

0

Вы пытаетесь выполнить то, что уже делает обычная система ведения журнала?

http://netcommon.sourceforge.net/

Я считаю, что вы можете получить более старую версию, которая будет работать с более старым VS 2005

Смежные вопросы