[英]Hiding NLog With static property returning class instance
我試圖擺脫我的代碼對NLog的直接依賴。 因此,如果將來我決定使用另一個日志記錄庫,它將很輕松。 我所做的如下
internal class Logger
{
private NLog.Logger _NLogInstance;
internal static Logger Instance
{
get
{
return new Logger();
}
}
public Logger()
{
LogManager.ReconfigExistingLoggers();
_NLogInstance = LogManager.GetCurrentClassLogger();
}
public void Trace(string message)
{
_NLogInstance.Trace(message);
}
public void Debug(string message)
{
_NLogInstance.Debug(message);
}
public void Info(string message)
{
_NLogInstance.Info(message);
}
public void Warn(string message)
{
_NLogInstance.Warn(message);
}
public void Error(Exception ex, string message)
{
_NLogInstance.Error(ex, message);
}
public void Fatal(Exception ex, string message)
{
_NLogInstance.Fatal(ex, message);
}
}
如您所見,只需使用Logger,
Logger.Instance.Fatal(ex, ex.Message);
因此,NLog的真正實現對Logger用戶而言是隱藏的。 如果明天我需要使用Log4net,則只需更改Logger類中的實現即可。
這樣做有潛在的問題嗎? 因為我看不到有人在任何地方這樣做。 還是有更好的方法?
我完全同意這些意見。 您可能不需要切換到另一個日志記錄庫,如果這樣做,是因為新的庫非常聰明,並且以另一種方式工作,因此無論如何您都需要更改抽象。
如果您堅持要包裝您的Common Logging .NET 。 它是幾乎所有主要日志記錄框架之上的抽象。 這樣,您無需自己編寫抽象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.