繁体   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