有没有办法在 NLog 4.6 中以编程方式配置目标规则过滤器?
Is there a way to programmatically configure target rules filters in NLog 4.6?
我正在尝试将我所有的 NLog 配置包装到一个 C# class 中,它可以用作我公司 "common" 库的一部分,但我需要能够支持记录器过滤.我专门尝试实施阈值以忽略重复的消息(想想 DDOS)。除了这些过滤设置外,我已经能够从 NLog.config 文件移植我的所有设置。
下面是 NLog 中关于如何在 .config 文件中配置过滤的示例代码,但我无法在公开的 class 方法中找到任何方法来复制它。
<logger name="*" writeTo="file">
<filters defaultAction='Log'>
<when condition="length('${message}') > 100" action="Ignore" />
</filters>
</logger>
LoggingRule
下有Filter
个合集。
你可以翻译成这样:
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;
我正在尝试将我所有的 NLog 配置包装到一个 C# class 中,它可以用作我公司 "common" 库的一部分,但我需要能够支持记录器过滤.我专门尝试实施阈值以忽略重复的消息(想想 DDOS)。除了这些过滤设置外,我已经能够从 NLog.config 文件移植我的所有设置。
下面是 NLog 中关于如何在 .config 文件中配置过滤的示例代码,但我无法在公开的 class 方法中找到任何方法来复制它。
<logger name="*" writeTo="file">
<filters defaultAction='Log'>
<when condition="length('${message}') > 100" action="Ignore" />
</filters>
</logger>
LoggingRule
下有Filter
个合集。
你可以翻译成这样:
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;