我已将SMTP appender配置为在出现错误时发送电子邮件。
<appender name="EmailAppender">
<bufferSize value="50" />
<lossy value="false" />
<threshold value="ALL" />
<evaluator type="log4net.Core.LevelEvaluator,log4net">
<threshold value="ERROR" />
</evaluator>
</appender>
我还需要在完成操作(非错误)时收到电子邮件。理论上我可以将此记录为错误并收到电子邮件,但实际上这不是错误,而是指示操作已完成(更像是INFO)。
我应该添加另一个SMTP appender吗?
答案 0 :(得分:3)
您应该可以将<threshold value="ERROR"/>
更改为<threshold value="INFO"/>
。然后,这个appender将发送INFO,WARN,ERROR和FATAL的电子邮件。
如果您需要自定义级别,可以使用以下内容:
<level>
<name value="CUSTOM"/>
<value value="35000"/>
</level>
有关如何使用自定义级别进行过滤的详细信息,请参阅this question。 Apache提供了关于级别here的更多信息。
答案 1 :(得分:0)
在我的一个项目中,我使用命名空间来控制日志记录。以下是示例配置:
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender,log4net" >
<param name="File" value="c:\\tmp\\remoteServerLog.txt" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="3MB" />
<param name="AppendToFile" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d %-5p %c - %m%n" />
</layout>
</appender>
<root>
<priority value="ALL" />
</root>
<logger name="NHibernate.SQL">
<level value="WARN" />
<appender-ref ref="LogFileAppender" />
</logger>
<logger name="NHibernate.Cfg">
<level value="WARN" />
<appender-ref ref="LogFileAppender" />
</logger>
<logger name="NHibernate">
<level value="WARN" />
<appender-ref ref="LogFileAppender" />
</logger>
<logger name="MyNameSpace.MyBusinessCore">
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</logger>
根据源类的命名空间,您可以调整日志记录级别。因此,在上面的示例中,我只记录来自NHibernate的WARNings以及来自MyNameSpace.MyBusinessCore的所有内容(包括DEBUG和TRACE)。
总而言之,在您的示例中,我只会添加以下内容:
<root>
<priority value="INFO" />
</root>
<logger name="Your.Namespace ">
<level value="INFO" />
<appender-ref ref="EmailAppender" />
</logger>
比Your.Namespace还会发送INFO级别日志。