Patrick Skelton Ответов: 1

Как отфильтровать регистратор nlog, чтобы он содержал только строки, содержащие подстроку?


Я читал документы по этому вопросу, но не могу заставить регистратор NLog содержать только строки, содержащие фиксированную подстроку. Я использую приведенный ниже код. Файл записан, но содержит все выходные данные журнала, точно так же, как и другой журнал, который у меня есть, но не имеет фильтра.

Может ли кто-нибудь сказать мне, что я делаю не так?

& lt;правила>
&ЛТ;logger имя="*" minlevel="след" запись="хранилище данных"и GT;
& lt;фильтры>
&ЛТ;если условие="содержится('${сообщение}','ХХХХ')" действие="LogFinal"/&ГТ;
< / фильтры>
&ЛТ;/регистратор и GT;
< / правила>

Что я уже пробовал:

Честно говоря, я не могу придумать, что еще попробовать прямо сейчас. Приведенный выше код выглядит мертвенно простым, и я не понимаю, почему он не должен работать.

1 Ответов

Рейтинг:
4

Patrick Skelton

Ответ на этот вопрос (как я и подозревал) раздражающе очевиден. Ключ к разгадке-в названии. Эти вещи называются "фильтрами", поэтому они не говорят, что именно должен быть записанным в журнал; они говорят, что не должно быть записанным в журнал.

Итак, это работает, если я изменю фильтр на:

&ЛТ;если условие="не содержит('${сообщение}','ХХХХ')" действие="игнорировать"/&ГТ;


Richard Deeming

Термин "фильтр", по-видимому, используется взаимозаменяемо для обозначения обоих "включайте только те предметы, которые соответствуют этому" и "не включайте предметы, которые соответствуют этому"- так что это не так очевидно, как вы могли бы подумать! :)

Patrick Skelton

Очень хорошая мысль. Я должен сказать, что я нашел все это - включая документацию - менее чем интуитивным.