我使用log4net记录不同类型的消息。 我在记录消息时已将SmtpAppender添加到特定用户的电子邮件中。 但是,我想要实现的是,只有在记录错误或致命错误时才能发送电子邮件。 根据我在web.config文件中的当前配置,我收到两封电子邮件,一封用于错误,另一封用于其他日志。 的global.asax.cs:
logger.Info("Info");
logger.Warn("Warning");
logger.Fatal("Fatal");
logger.Error("exception");
的web.config:
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
<to value="bla@bla.com" />
<from value="bla@bla.com" />
<subject value="test logging message" />
<smtpHost value="*******" />
<bufferSize value="512" />
<lossy value="true" />
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="WARN"/>
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%date [%thread] %-5level %logger- %message%newline%newline%newline" />
</layout>
</appender>
答案 0 :(得分:1)
我找到了解决方案,我应该将此标记添加到SmtpAppender:
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMax value="FATAL" />
</filter>
答案 1 :(得分:0)
尝试使用:
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
...
<threshold value="WARN"/>
...
</appender>
(或threshold value="ERROR"
,因为您说要限制为Error和Fatallevels)而不是:
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
...
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="WARN"/>
</evaluator>
...
</appender>
log4net文档或this message in the log4net user mailing list解释了差异。