我有
<logger name="*" minlevel="Trace" writeTo="f1" />
现在我添加了maxlevel。所以
<logger name="*" minlevel="Trace" maxlevel="Error" writeTo="f1" />
我想以编程方式实现它。我尝试了什么
Then in code:
var filter = new ConditionBasedFilter();
filter.Action = FilterResult.Log;
filter.Condition = "(level <= LogLevel.Info)";
var loggerRule = new LoggingRule(ruleName, LogLevel.Debug, target);
loggerRule.Filters.Add(filter);
nLogLoggingConfiguration.LoggingRules.Add(loggerRule);
但过滤器无效,因为结果与我不添加过滤器的结果相同。这意味着我是否注释了loggerRule.Filters.Add(filter);
行,我得到了相同的结果。
修改
这可能是NLOG的错误。设置filter.Action = FilterResult.Log;
时
和var loggerRule = new LoggingRule(ruleName, LogLevel.Debug, target);
。
条件无法应用于规则。
答案 0 :(得分:0)
我们可以做到以下几点:
filter.Action = FilterResult.Ignore;
filter.Condition = "(level == LogLevel.Trace or level == LogLevel.Warn or level == LogLevel.Error or level == LogLevel.Fatal)"