尝试使用 Log4Net 将日志记录添加到应用程序。
可能我完全误解了这个框架的用途以及它是如何工作的,但我想做的是有一个自定义外观类,在它下面我实际上启动了我的 log4net 实例并且(这就是麻烦)使用默认情况下单个配置文件,如果需要,可以由使用该类的应用程序覆盖。
所以我创建了一个自定义的 Log4NetLogger 类和它的接口:
public class Log4NetLogger : ILogging
{
private ILog _logger;
public Log4NetLogger()
{
log4net.Config.XmlConfigurator.Configure();
_logger = LogManager.GetLogger(this.GetType());
string meh = string.Empty;
}
//interface methods for error, warn, info etc
}
在包含我的 Log4NetLogger 类的项目的 AssemblyInfo.cs 中,我添加了:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
在项目中,我添加了一个看起来有点像这样的 Log4Net.config 文件:
<log4net>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
<!-- various gubbins -->
<root>
<level value="ALL" />
<appender-ref ref="AdoNetAppender" />
</root>
</log4net>
并且在编译时设置为“始终复制”,因此在引用它的任何项目的 bin 文件夹中都应该有它的副本。
现在,在一个测试类中,我添加了对该项目的引用并完成了以下操作:
Log4NetLogger logger = new Log4NetLogger();
logger.Info("started");
这绝对没有任何作用。
单步调试调试器中的代码,很明显 Log4Net 没有获取配置文件。日志管理器发回的记录器已将所有级别变为禁用。
但是,如果您将相同的配置部分添加到我的测试项目的 web.config 中,它就可以工作。但我真的不想在解决方案中的每个配置文件中添加大量相同的 appender 配置。
我做错了什么,我的方法有什么问题,最好的方法是什么?
干杯,马特