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>
工作,我會問你決定做一個8歲的框架開發? –