log4net的 - 只有在退出异常堆栈跟踪的某些文件堆栈、异常、文件、log4net

2023-09-02 20:45:45 作者:冰糖葫芦娃

我目前在使用log4net的我的应用程序的多个日志文件。

I currently have multiple log files in my application using log4net.

我有一个包含每个类型的消息的顶层日志文件。我也有只包含错误信息的错误日志文件。我想将其配置在具体的异常细节和堆栈跟踪只出现在错误日志文件。

I have a top level log file which contains every type of message. I also have an error log file which contains only error information. I am trying to configure it so the specific exception details and stack trace only appear in the error log file.

我现在用的电话是 Log.Error(myMessage,myException);

我的配置可以在下面看到:

My config can be seen below:

<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错误日志包含%异常,堆栈跟踪显示在两个日志中。有谁知道我可以阻止这种情况发生?

Despite the fact that i have only included %exception in the conversionPattern for the error log, the stacktrace appears in both logs. Does anyone know how i can stop this from happening?

推荐答案

配置是这样的(GeneralTextLog追加程序)的布局:

Configure the layout like this (GeneralTextLog Appender):

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

设置 IgnoresException 为false告诉附加器的布局将采取异常的照顾。因此,你可以选择不打印堆栈跟踪。

Setting IgnoresException to false tells the appender that the layout will take care of the exception. Thus you can choose not to print the stack trace.

 
精彩推荐