【发布时间】:2019-08-28 06:21:46
【问题描述】:
我在 C# 中创建 NLog 目标过滤器时遇到问题。我正在尝试创建一个过滤器来记录到两个不同的目标。我有一个基于包含匹配字符串的消息内容的条件。问题是我似乎无法让条件与机器名或事件上下文内容一起使用。
这将在使用消息本身时按预期工作:
var newRule = new LoggingRule("*", logLevel, someWrapper);
newRule.DefaultFilterResult = FilterResult.Ignore;
newRule.Filters.Add(new ConditionBasedFilter()
{
Condition = "contains(message, 'string')",
Action = FilterResult.Log
});
config.LoggingRules.Add(newRule);
这些不起作用:
Condition = "contains(machinename, 'string')"
Condition = "equals(machinename, 'string')"
Condition = "machinename == 'string')"
Condition = "contains(event-context:item=SomeItem, 'string')"
Condition = "equals(event-context:item=SomeItem, 'string')"
Condition = "event-context:item=SomeItem == 'string')"
我将看到的错误是:
“意外的令牌:==”或“意外的toekn:”
我不确定我的格式是否错误?我尝试了几种不同的选项,但似乎无法让条件过滤器与机器名或更具体地与事件上下文一起使用。
感谢您的宝贵时间和帮助!
【问题讨论】:
-
machinename是字符串变量,还是您要比较的实际文本? -
您确定不是在寻找 ${machinename}?
标签: c# filtering conditional-statements nlog