Есть ли способ программно настроить фильтры целевых правил в NLog 4.6? - PullRequest
2 голосов
/ 27 марта 2019

Я пытаюсь обернуть все свои конфигурации NLog в класс C #, который можно использовать как часть «общей» библиотеки моей компании, но мне нужно иметь возможность поддерживать фильтрацию в логгере.Я специально пытаюсь реализовать пороги, чтобы игнорировать повторяющиеся сообщения (например, DDOS).Мне удалось перенести все мои настройки из файла NLog.config, за исключением этих параметров фильтрации.

Ниже приведен пример кода из NLog о том, как настроить фильтрацию в файле .config, но у меня естьне удалось найти способ повторить это в открытых методах класса.

<logger name="*" writeTo="file">
  <filters defaultAction='Log'>
    <when condition="length('${message}') > 100" action="Ignore" />
  </filters>
</logger> 

1 Ответ

0 голосов
/ 28 марта 2019

Существует коллекция 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;
...