【发布时间】:2012-06-03 17:16:53
【问题描述】:
首先让我解释一下我的目标是什么。我正在尝试允许对我的配置文件的修改生效,而无需重新启动我的程序/调试。现在我尝试了两种方法,第一种方法是在我的 Assemblyinfo.cs 文件的底部添加以下代码
[assembly: log4net.Config.XmlConfigurator(Watch=true)]
现在记录器按预期工作,但是,当我在调试期间修改 .config 文件时,我所做的修改并没有使用。
我最初的假设是 app.config 文件在程序运行时无论出于何种原因都不能被“监视”。因此,我决定尝试创建一个外部配置文件并将 Log4Net 信息放在那里。为此,我将所有 Log4Net 信息从 app.config 文件中移出,并将其移至我创建的文件“Log4Net.config”中。然后我修改了 Assemblyinfo.cs 里面的代码如下:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
但是,现在记录器说它在启动时找不到配置文件。所以,这就是我要问的。
1) 如果确实可以监视 app.config 的修改,那我做错了什么?为什么程序运行时我的修改没有被注意到和执行?
2) 如果需要外部配置文件,为什么我创建的新配置文件无法被 Log4Net 找到?
这是我关于 stackoverflow 的第一个问题,我环顾四周,但找不到直接解决我问题的内容。感谢您的帮助!
【问题讨论】:
-
AFAIK,这两种方法都应该有效。当 log4net 的行为不符合您的预期时,首先要做的是启用 log4net 的内部日志记录,请参阅logging.apache.org/log4net/release/faq.html#internalDebug
标签: log4net log4net-configuration