Ken*_*Ken 59 c# logging log4net
这与650694类似,但没有接受答案,我根本无法获得任何建议,我怀疑我的情况可能略有不同.
我正在调用log4net.Config.XmlConfigurator.Configure().但是在程序中的这一点之后,我想将日志记录阈值更改为仅在运行时已知的值.
从另一个问题,我试过:
((log4net.Repository.Hierarchy.Logger)mylogger.Logger).Level = log4net.Core.Level.Error;
Run Code Online (Sandbox Code Playgroud)
和:
var appender = new log4net.Appender.ColoredConsoleAppender();
appender.Layout = new log4net.Layout.PatternLayout(@"%date %-5level %message%newline");
appender.Threshold = log4net.Core.Level.Error;
appender.ActivateOptions();
log4net.Config.BasicConfigurator.Configure(appender);
Run Code Online (Sandbox Code Playgroud)
但似乎没有任何效果:我仍然在控制台上看到DEBUG和INFO日志语句.
我的预感是我正在添加一个新的appender,它对XML配置中声明的appender没有影响(它告诉它打印DEBUG级别的消息),但我还没有任何证据.
我一直在挖掘log4net API一段时间了,我只是没有看到它.我有什么简单的东西吗?
小智 86
这里提出的这些解决方案都不适用于我.它在运行时没有改变
这对我有用:
((log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository()).Root.Level = Level.Debug;
((log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository()).RaiseConfigurationChanged(EventArgs.Empty);
Run Code Online (Sandbox Code Playgroud)
您必须在更改其配置后调用RaiseConfigurationChanged.
有一个简单的方法:
LogManager.GetRepository().Threshold = Level.Info;
Run Code Online (Sandbox Code Playgroud)
更多信息可以在这里找到.