Dot-Net

Log4Net - 僅針對某些文件註銷異常堆棧跟踪

  • September 7, 2010

我目前使用 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>

儘管我只在錯誤日誌的 conversionPattern 中包含了 %exception,但堆棧跟踪出現在兩個日誌中。有誰知道我怎樣才能阻止這種情況發生?

像這樣配置佈局(GeneralTextLog Appender):

<layout type="log4net.Layout.PatternLayout">
   <IgnoresException value="False" />
   ...

設置IgnoresException為 false 告訴 appender 佈局將處理異常。因此,您可以選擇不列印堆棧跟踪。

引用自:https://stackoverflow.com/questions/3659271