簡體   English   中英

如何使log4net.dll可選?

[英]How do I make log4net.dll optional?

我使用log4net在我的.NET應用程序中實現日志記錄。 但是,我不想為每個用戶分發300kb log4net.dll,而是如果他有問題並且我希望他提供日志,則將此dll發送給用戶。

那么,是否有可能讓我的應用程序運行是否存在dll? 當然,對於日志記錄,將需要dll,但如果不需要日志記錄,應用程序應該在沒有dll的情況下運行。

對的,這是可能的。

首先使用所有日志方法創建一個interfase:

public interface ILogger
{
    void Write(string message);
    // And much more methods.
}

現在創建兩個實例,一個虛擬實例(讓我們稱之為DummyLogger ),以及一個將其消息發送到Log4Net( Log4NetLogger )的實例。

要完成,請創建一個工廠類:

static public class LogFactory
{
     static public ILogger CreateLogger()
     {
          if (/*Check if Log4Net is available*/)
               return new Log4NetLogger();
          else
               return new DummyLogger();
     }
}

您可以通過檢查文件是否在bin-folder中來檢查Log4Net是否可用。 就像是:

File.Exists(AppDomain.CurrentDomain.BaseDirectory + "Log4Net.dll")

但我可以想象你想要做其他檢查,比如它是否存在於GAC或其他任何方面。

現在,您可以使用工廠創建記錄器並將“寫入”消息寫入日志:

ILogger logger = LoggerFactory.CreateLogger();
logger.Write("I am logging something!");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM