Исключить пользовательский класс 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>