#c# #nlog
#c# #nlog
Вопрос:
Я пытаюсь преобразовать все мои конфигурации NLog в класс C #, который можно использовать как часть «общей» библиотеки моей компании, но мне нужно иметь возможность поддерживать фильтрацию регистратора. Я специально пытаюсь реализовать пороговые значения для игнорирования повторяющихся сообщений (например, DDOS). Я смог перенести все свои настройки из файла NLog.config, за исключением этих настроек фильтрации.
Ниже приведен пример кода из NLog о том, как настроить фильтрацию в файле .config, но я не смог найти никакого способа воспроизвести это в доступных методах класса.
<logger name="*" writeTo="file">
<filters defaultAction='Log'>
<when condition="length('${message}') > 100" action="Ignore" />
</filters>
</logger>
Ответ №1:
Существует 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;
Комментарии:
1. Также добавлено здесь: github.com/NLog/NLog/wiki/Filtering-log-messages