我目前使用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会告诉附加程序,布局将处理异常。因此,您可以选择不打印堆栈跟踪。
关于.net - Log4Net-仅注销某些文件的异常堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3659271/