我使用log4net在我的.NET应用程序中实现日志记录。 但是,我不想为每个用户分发300kb log4net.dll,而是在他遇到问题时将此dll发送给用户,我希望他提供日志。
那么,是否有可能让我的应用程序运行是否存在dll? 当然,对于日志记录,将需要dll,但如果不需要日志记录,应用程序应该在没有dll的情况下运行。
答案 0 :(得分:4)
是的,这是可能的。
首先使用所有日志方法创建一个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!");