我有一个 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% 确定它是否可能只是找不到配置文件。它在编译时被复制,并位于与包含记录器类的程序集相同的文件夹中,所以我认为这应该可行。
哎呀..卡了三个小时了。 :有什么建议吗?
最佳答案
我的心灵调试器说您的 LoggerConfig.log4net 不在正确的目录中。它没有部署到您的测试目录,并且在运行测试时找不到。这就是为什么没有日志输出的原因。将文件部署在测试目录中,您将获得日志输出。
编辑:更准确地说,您需要在“测试”->“编辑测试设置”->>“部署”下将其添加为部署文件(如下所述:How can I get "Copy to Output Directory" to work with Unit Tests?)
关于c# - log4net 包装器不记录(在 MSTest UT 期间),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7805030/