2010-02-26 127 views
4

我已經配置了一個SMTP appender在發生錯誤時發送電子郵件。Log4Net多個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嗎?

+1

爲什麼不只是將閾值更改爲INFO? – 2010-02-26 23:29:34

+0

還有其他INFO消息我不想發送電子郵件 – DotnetDude 2010-02-26 23:43:48

回答

3

您應該可以將<threshold value="ERROR"/>更改爲<threshold value="INFO"/>。然後這個appender將發送INFO,WARN,ERROR和FATAL的電子郵件。

如果您需要自定義級別,您可以使用類似:

<level> 
    <name value="CUSTOM"/> 
    <value value="35000"/> 
</level> 

有關如何使用自定義級別進行過濾的更多信息,請參見this question。 Apache提供關於here級別的更多信息。

+0

還有其他INFO消息我不想發送電子郵件 – DotnetDude 2010-02-26 23:43:28

+0

我已更新我的答案。 – 2010-02-26 23:45:51

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的警告以及MyNameSpace.MyBusinessCore(包括DEBUG和TRACE)中的所有內容。

綜上所述,在你的例子我只想補充以下內容:

<root> 
    <priority value="INFO" /> 
</root> 
<logger name="Your.Namespace "> 
    <level value="INFO" /> 
    <appender-ref ref="EmailAppender" /> 
</logger> 

比Your.Namespace也將發送INFO級別的日誌。