log4net监视不重新加载配置

log4net监视不重新加载配置,log4net,Log4net,我正在尝试编写一个应用程序,在更改配置文件时更改日志记录级别 类程序 { private static readonly ILog log=LogManager.GetLogger(typeof(Program)); 静态void Main(字符串[]参数) { XmlConfigurator.ConfigureAndWatch(新文件信息(@“log4net.config”); 做 { 调试(“你好,世界!”); Info(“我是一个简单的log4net教程”); log.Warn(“……最好

我正在尝试编写一个应用程序,在更改配置文件时更改日志记录级别

类程序
{
private static readonly ILog log=LogManager.GetLogger(typeof(Program));
静态void Main(字符串[]参数)
{
XmlConfigurator.ConfigureAndWatch(新文件信息(@“log4net.config”);
做
{
调试(“你好,世界!”);
Info(“我是一个简单的log4net教程”);
log.Warn(“……最好小心……”);
log.Error(“ruh roh:发生错误”);
日志。致命(“天哪,我们完蛋了!”);
睡眠(1000);
}虽然(正确);
}
我的配置文件:


据我所知(如果我错了,请纠正我),watch部分意味着在文件更改时重新加载XML配置。我尝试在程序运行时更改调试级别,但只有在重新启动程序时才更改该级别

我已经尝试在AssemblyInfo中使用
[assembly:log4net.Config.xmlconfigulator(ConfigFile=“log4net.Config”,Watch=true)]
而不是在main中进行配置,同样的问题是,不会监视更改。
如有任何见解,我将不胜感激。

Tal

您必须从logmanager获取日志记录器:

类程序
{
静态void Main(字符串[]参数)
{
XmlConfigurator.ConfigureAndWatch(新文件信息(@“log4net.config”);
做
{
iloglog=LogManager.GetLogger(typeof(Program));
调试(“你好,世界!”);
Info(“我是一个简单的log4net教程”);
log.Warn(“……最好小心……”);
log.Error(“ruh roh:发生错误”);
日志。致命(“天哪,我们完蛋了!”);
睡眠(1000);
}虽然(正确);
}

当您获取记录器时,它将使用新设置。

您必须从logmanager获取记录器:

类程序
{
静态void Main(字符串[]参数)
{
XmlConfigurator.ConfigureAndWatch(新文件信息(@“log4net.config”);
做
{
iloglog=LogManager.GetLogger(typeof(Program));
调试(“你好,世界!”);
Info(“我是一个简单的log4net教程”);
log.Warn(“……最好小心……”);
log.Error(“ruh roh:发生错误”);
日志。致命(“天哪,我们完蛋了!”);
睡眠(1000);
}虽然(正确);
}

当您获取日志时,它将使用新的设置。

谢谢您的回答同伴,我已经尝试过了,但是日志级别没有改变。谢谢您的回答同伴,我已经尝试过了,但是日志级别仍然没有改变。我会发布您的配置的外观以及您如何更改它,以及验证您是否正在更改right配置文件(在调试目录与根项目目录中更改)。观察程序工作顺利吗?我将发布您的配置的外观以及您如何更改它,并验证您是否更改了正确的配置文件(在调试目录与根项目目录中更改)。观察程序工作顺利吗?