Исключить пользовательский класс Exception из входа в ядро ​​Asp.net

Есть ли способ исключить пользовательский класс Exception из системы ведения журнала? Я знаю, что могу отфильтровать по категориям, но я хотел бы просто исключить один самодельный класс исключений.

0 ответов

Не вижу выхода со встроенными фильтрами. Но вы можете использовать NLog с системой ведения журналов ASP.NET Core. Вы пишете сообщения журнала так же, как и раньше, но он предоставляет вам более широкий диапазон конфигурации, включая способ фильтрации определенных типов исключений.

Образец

Создадим nlog.config с двумя целевыми файлами журнала: один со всеми сообщениями, включая нежелательный тип исключения, и один без этого типа:

<targets>
    <target xsi:type="File" 
            name="all" 
            fileName="all-${shortdate}.log" 
            layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" />
    <target xsi:type="File" 
            name="filtered" 
            fileName="filtered-${shortdate}.log" 
            layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" />
</targets>

Исключение нежелательных типов исключений настраивается в правилах ведения журнала. В этом примере мы фильтруем тип исключенияSampleApplication.Exceptions.SampleException:

<rules>
  <logger name="*" minlevel="Trace" writeTo="all" />
  <logger name="*" minlevel="Trace" writeTo="filtered">
    <filters>
      <when condition="contains('${exception:format=Type}', 'SampleApplication.Exceptions.SampleException')" 
            action="Ignore" />
    </filters>
  </logger>
</rules>
Другие вопросы по тегам