请考虑以下代码:
public static void Main(string[] args)
{
// 1. At this point NLog will search for most common configuration locations,
// as described in http://nlog-project.org/wiki/Configuration_file.
var loggerOne = LogManager.GetLogger("LoggerOne");
// 2. We set NLog configuration to null, hoping that the next time the
// configuration is requested the whole process (1) will be repeated.
LogManager.Configuration = null;
// 3. NLog won't actually repeat process (1), and so logging is disabled for
// the following logger since the configuration is still null.
var loggerTwo = LogManager.GetLogger("LoggerTwo");
}
浏览NLog的源代码很明显,这与启动时在configLoaded
设置的基础LogFactory
的{{1}}字段有关,而不是重置为{{1在将true
分配给false
属性之后(对我而言,这将是最有意义的)。我的问题是我是否遗漏了这个过程中的某些内容,或者是否确实存在这样的情况(当然没有使用Reflection)迫使NLog从头开始重新配置并重复进程null
。
答案 0 :(得分:0)
首先,让我问一下你想要完成的是什么?在试图了解NLog如何工作时,这更像是一种练习吗?是否有某些特别想要完成的事情?如果是后者,也许已经有一种制裁方式来做你想做的事。
话虽如此,我有一个可能有用的想法(我没试过)。
在查看NLog源代码时,您似乎可以做到这样的事情:
LogManager.Configuration = new LoggingConfiguration();
分配新的LoggingConfiguration看起来会导致日志配置过程从头开始。我不确定在旧配置生效时可能检索到的任何记录器会发生什么。它们仍然有效吗?他们会做任何事吗?