C# log4net包装器不';t日志(MSUTS测试期间)

C# log4net包装器不';t日志(MSUTS测试期间),c#,.net,visual-studio,log4net,mstest,C#,.net,Visual Studio,Log4net,Mstest,我有一个log4net的包装类,可以在一组dll库中跨多个类和程序集进行日志记录。(这可能是糟糕的设计,但……不要问) 代码基本上如下所示: public static class Logger { private static ILog log; static Logger() { log = LogManager.GetLogger("abcd"); XmlConfigurator.Configure(new FileInfo("Lo

我有一个log4net的包装类,可以在一组dll库中跨多个类和程序集进行日志记录。(这可能是糟糕的设计,但……不要问) 代码基本上如下所示:

public static class Logger
{
    private static ILog log;

    static Logger()
    {
        log = LogManager.GetLogger("abcd");
        XmlConfigurator.Configure(new FileInfo("LoggerConfig.log4net"));
        log.Info("=== NEW SESSION ===");
    }

    public static void Log(string message)
    {
        log.Debug(message);
    }
}
现在。。如果静态构造函数是一个简单可执行文件的静态主例程,那么它工作得非常好(我很快制作了一个控制台应用程序来测试它)。但在这里,情况并非如此。 因为我处理的是独立程序集,而不是可执行文件,所以我可以轻松测试记录器的唯一方法是通过MSTest。这可能是导致此问题的原因之一。我不能100%确定它是否只是找不到配置文件。它在编译时被复制,并且与包含logger类的程序集位于同一文件夹中,因此我认为这应该可以工作


呜呜。。三个小时后就被卡住了T有什么建议吗?

您是否尝试按绝对路径引用配置文件?可能MSTests的根目录与控制台应用程序根目录不同?

我的心理调试器说LoggerConfig.log4net不在正确的目录中。它未部署到测试目录,并且在运行测试时未找到。这就是为什么没有日志输出。在测试目录中部署该文件,您将记录输出


编辑:更准确地说,您需要将其作为部署文件添加到Test->EDIT Test Settings->>deployment(如下所述)

MsTest shadow将文件复制到所有地方,正如peer和Hinek所说,文件的位置可能是问题所在。我发现在测试程序集中包含文件是解决这个问题的一种方法


查看以前的详细信息。

Log4net是否在App.config中使用配置?试着把它们也放在测试库中


我知道有很多库的应用程序都存在此问题,并且必须只在主应用程序中进行反配置。

mmm。。你说得对,我想知道TestResults子文件夹中的那些“Out”文件夹-那里的文件不存在。然而,我担心的是,我希望它“属于”记录器所在的程序集/项目,因为最终,我希望在没有单元测试程序集的情况下部署库。有没有办法告诉MSTest复制此文件?我不确定,但我认为您可以将该文件添加到部署文件中。但是在单元测试的情况下,配置文件必须来自单元测试项目(否则,如果更改日志设置,单元测试将失败)。我会尝试添加文件,标记为用于部署。啊,可以将其添加为“测试->编辑测试设置->>部署”(如下所述)下的部署文件。我想这会起作用。。但我不想这样做,因为库用户应该能够在部署后选择日志位置和级别。(见上文评论)