2010-02-26 4 views
4

오류가있을 때마다 전자 메일을 보내도록 SMTP appender를 구성했습니다.Log4Net 여러 SMTP 애펜더?

<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 애플릿을 추가해야합니까?

+1

임계 값을 INFO로 변경하지 않는 이유는 무엇입니까? –

+0

이메일을 보내지 않으려는 다른 INFO 메시지가 있습니다. – DotnetDude

답변

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

+0

답변을 업데이트했습니다. –

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 포함)의 모든 것만 기록합니다.

내가 단지 다음과 같은 추가 할 귀하의 예제에서, 요약하면 : Your.Namespace보다

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

는 INFO 수준 로그를 전송합니다.