2

我正在为 C# SDK 使用 log4net,对于我现有的实现(SDK 和客户端),请参阅以下代码片段(示例)。

我想让 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>
4

1 回答 1

0

您是否正在尝试完成通用日志框架已经完成的事情?

http://netcommon.sourceforge.net/

我相信您可以获得适用于旧 VS 2005 的旧版本

于 2013-06-25T09:16:49.887 回答