Вход в другой файл в зависимости от подстроки содержит при фильтре - PullRequest
1 голос
/ 20 мая 2019

Я хотел бы настроить фильтры в моем файле nlog.config таким образом, чтобы запись журнала шла в один файл (определенный целевым файлом domainTarget), если сообщение содержит подстроку, и в другой файл (определенный посредствомцелевой файл technicalTarget), если это не так.

Другими словами: все, что включено в domainTarget (независимо от сложности его правил), никогда не должно отображаться в technicalTarget.

Вот что я попробовал:

<rules>
    <logger name="*" minlevel="Trace" writeTo="domainTarget">
        <filters>
            <when condition="contains('${message}', 'mysubstring')" action="LogFinal"/>
        </filters>
    </logger>
    <logger name="*" minlevel="Trace" writeTo="technicalTarget"/>
</rules>

С этими настройками он записывает все в domainTarget.А также записывает все в technicalTarget , за исключением сообщений с подстрокой.

Может кто-нибудь

  1. Объяснить алгоритм, как применяются эти фильтры.
  2. Покажите мне правильные настройки фильтра для достижения моей цели.

1 Ответ

2 голосов
/ 20 мая 2019

Вы пытались использовать defaultAction , представленное в NLog 4.6?

<logger name="*" minlevel="Trace" writeTo="domainTarget">
  <filters defaultAction="Ignore">
    <when condition="contains('${message}', 'mysubstring')" action="LogFinal" />
  </filters>
</logger> 
<logger name="*" minlevel="Trace" writeTo="technicalTarget"/>
...