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 сообщает приложению, что макет позаботится об исключении. Таким образом, вы можете не печатать трассировку стека.


из вашей конфигурации похоже, что ваша трассировка стека была включена как часть вашего