【发布时间】:2010-10-17 11:41:47
【问题描述】:
这类似于650694,但那里没有接受任何答案,我根本无法得到任何这些建议,我怀疑我的情况可能略有不同。
我正在调用 log4net.Config.XmlConfigurator.Configure()。但是在程序中的那个点之后,我想将日志记录阈值更改为仅在运行时知道的值。
从另一个问题,我试过了:
((log4net.Repository.Hierarchy.Logger)mylogger.Logger).Level = log4net.Core.Level.Error;
和:
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);
但似乎都没有任何效果:我仍然在控制台上看到 DEBUG 和 INFO 日志记录语句。
我的预感是我正在添加一个新的 appender,它对 XML 配置中声明的 appender 没有影响(告诉它打印 DEBUG 级别的消息),但我还没有任何证据。
我已经研究了一段时间的 log4net API,但我只是没有看到它。我缺少什么简单的东西吗?
【问题讨论】:
-
将记录器的级别设置为“错误”应防止记录该记录器的任何调试或信息输出。您正在查看正在更改其日志记录级别的 Logger 的 DEBUG 和 INFO?
-
这是一个好点:#1 可能只为一个记录器设置阈值。但#2 看起来应该是全球性的。
-
是的 #1 仅设置您正在更改的单个 Logger 实例的阈值,以及层次结构中其下方没有明确设置级别的任何 Logger。
-
我尝试使用 #1 遍历所有 log4net.LogManager.GetCurrentLoggers(),但这也无济于事。而且我仍然认为 #2 看起来应该是全球性的。
-
您能否提供您的 log4net 配置,只需将其编辑到问题的末尾?