Log4Net-выход из исключения stacktrace только для определенных файлов
в настоящее время у меня есть несколько файлов журнала в моем приложении с помощью log4net.
у меня есть файл журнала верхнего уровня, который содержит все типы сообщений. У меня также есть журнал ошибок, который содержит только информацию об ошибках. Я пытаюсь настроить его так, чтобы конкретные сведения об исключении и трассировка стека отображались только в файле журнала ошибок.
вызов, который я использую Log.Error(myMessage, myException);
мою конфигурацию можно увидеть ниже:
<configuration>
<log4net>
<root>
<level value="ALL"/>
<appender-ref ref="GeneralTextLog"/>
<appender-ref ref="ErrorTextLog"/>
</root>
<!-- The general appender rolls by date -->
<appender name="GeneralTextLog" type="log4net.Appender.RollingFileAppender">
<filter type="log4net.Filter.LevelRangeFilter">
<level value="ALL"/>
</filter>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{HH:mm:ss.fff} [%type] %-5p %message%n"/>
</layout>
<rollingStyle value="Date"/>
<file value="C:/Logs/General_"/>
<datePattern value="yyyy_MM_dd'.log'" />
<appendToFile value="true"/>
<staticLogFileName value="false"/>
</appender>
<!-- The Error appender rolls by date -->
<appender name="ErrorTextLog" type="log4net.Appender.RollingFileAppender">
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="WARN"/>
<levelMax value="FATAL"/>
</filter>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{HH:mm:ss.fff} [%type] %-5p %message%newline%exception"/>
</layout>
<rollingStyle value="Date"/>
<file value="C:/Logs/Error_"/>
<datePattern value="yyyy_MM_dd'.log'" />
<appendToFile value="true"/>
<staticLogFileName value="false"/>
</appender>
<!-- Loggers -->
<logger name="DefaultLogger">
<appender-ref ref="GeneralTextLog"/>
<level value="ALL"/>
</logger>
<logger name="ErrorLogger">
<appender-ref ref="ErrorTextLog"/>
<levelMin value="WARN"/>
<levelMax value="FATAL"/>
</logger>
несмотря на то, что я включил только %exception в conversionPattern для журнала ошибок, stacktrace появляется в обоих журналах. Кто-нибудь знает, как я могу это предотвратить?
2 ответов
настройте макет следующим образом (Generaltextlog Appender):
<layout type="log4net.Layout.PatternLayout">
<IgnoresException value="False" />
...
задание IgnoresException
to false сообщает приложению, что макет позаботится об исключении. Таким образом, вы можете не печатать трассировку стека.