我正在尝试将我的所有NLog配置都包装到一个C#类中,该类可以用作公司“公共”库的一部分,但是我需要能够支持记录器筛选。我专门尝试实现忽略重复消息的阈值(以DDOS为例)。除了这些过滤设置,我已经能够从NLog.config文件中移植所有设置。
下面是来自NLog的示例代码,该示例代码说明如何在.config文件中配置过滤,但是我无法在公开的类方法中找到任何方法来复制此内容。
<logger name="*" writeTo="file">
<filters defaultAction='Log'>
<when condition="length('${message}') > 100" action="Ignore" />
</filters>
</logger>
答案 0 :(得分:0)
在Filter
下有一个LoggingRule
集合。
您可以翻译为:
var config = LogManager.Configuration;
// some target
var fileTarget = new FileTarget();
// set-up rule with filter
var loggingRule = new LoggingRule("*", fileTarget);
loggingRule.DefaultFilterResult = FilterResult.Log;
loggingRule.Filters.Add(new ConditionBasedFilter()
{
Condition = "length('${message}') > 100",
Action = FilterResult.Ignore
});
config.LoggingRules.Add(loggingRule);
// apply config
LogManager.Configuration = config;