我已经使用 RollingLogFileAppender 和 SmtpAppender 配置了 log4net,目的是将 DEBUG 级别记录到 RollingLogFileAppender 并将 FATAL 仅记录到 SmtpAppender:
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
<to value="test@test.com" />
<from value="test@test.com" />
<subject value="Fatal Error" />
<smtpHost value="smtp.test.com" />
<SMTPPort value="366"/>
<Username value="test@test.com"/>
<Password value="password"/>
<bufferSize value="1" />
<lossy value="true" />
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="FATAL"/>
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender" />
<appender-ref ref="SmtpAppender" />
</root>
在我增加 bufferSize 之前,这非常有效。当我这样做时,所有级别都通过电子邮件发送,并且 log4net.Core.LevelEvaluator 似乎被忽略了。我也尝试过使用 LevelRangeFilter 和 LevelMatchFilter 但是配置了这些我似乎根本没有收到任何电子邮件。