我使用 log4net 在我的 .NET 应用程序中实现日志记录。但是,我不想为每个用户分发 300kb log4net.dll,而是将此 dll 发送给用户,如果他有问题并且我希望他提供日志。
那么,无论dll是否存在,是否可以让我的应用程序运行?当然,对于记录 dll 是需要的,但如果不需要记录,应用程序应该在没有 dll 的情况下运行。
对的,这是可能的。
首先使用所有日志方法创建一个接口:
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 文件夹中来检查 Log4Net 是否可用。就像是:
File.Exists(AppDomain.CurrentDomain.BaseDirectory + "Log4Net.dll")
但我可以想象您想要进行其他检查,例如它是否存在于 GAC 中或其他任何地方。
现在您可以使用您的工厂来创建您的记录器并将消息“写入”到日志中:
ILogger logger = LoggerFactory.CreateLogger();
logger.Write("I am logging something!");