我正在使用log4net,试图登录我的单元测试。如果我手动拨打
log4net.Config.XmlConfigurator.Configure();
由于这有效,这似乎消除了所有“错误的配置,配置位置”问题。
它有效,但是有大量的测试类,所以这并不好。
我添加了
[assembly: log4net.Config.XmlConfigurator(Watch=true)]
到我的测试项目的assemblyinfo,但是当我运行时(通过本机MSTest或Resharper测试运行器),我没有记录。
帮助?
答案 0 :(得分:1)
正如documentation for assembly attributes
中所述因此,如果使用配置属性,则必须调用log4net 允许它读取属性。一个简单的电话 LogManager.GetLogger将导致调用程序集上的属性 被阅读和处理。 因此必须进行日志记录 在应用程序启动期间尽早调用,以及 当然,在加载和调用任何外部程序集之前。
由于单元测试运行器加载测试程序集以便查找和测试,因此无法在单元测试项目中使用程序集属性初始化log4net,您必须使用XmlConfigurator
。
编辑:as linked在OP的评论中,可以使用AssemblyInitializeAttribute
在整个测试项目的一个位置完成答案 1 :(得分:1)
[AssemblyInitialize()]
public static void MyTestInitialize(TestContext testContext)
{
// Take care the log4net.config file is added to the deployment files of the testconfig
FileInfo fileInfo;
string fullPath = Path.Combine(System.Environment.CurrentDirectory, "log4net.config");
fileInfo = new FileInfo(fullPath);