1. 程式人生 > >logback傳送錯誤郵件

logback傳送錯誤郵件

logback日誌預警:
1.maven加入郵件傳送jar包
<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>

2.logback.xml加入下面程式碼
<!--  郵件 -->
    <property name="smtpHost" value="smtp.exmail.qq.com" />  
    <property name="username" value="
[email protected]
" />
    <property name="email_to" value="[email protected]" />
    <property name="password" value="password" />
    <property name="SSL" value="true" />
    <property name="email_subject" value="xxxx預警" />  
    
    <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">  
        <smtpHost>${smtpHost}</smtpHost>  
        <Username>${username}</Username>  
        <Password>${password}</Password>  
        <SSL>${SSL}</SSL>  
        <to>${email_to}</to>  
        <from>${username}</from>  
        <subject>${email_subject}</subject>  
        <asynchronousSending>true</asynchronousSending>
        <layout class="ch.qos.logback.classic.PatternLayout">
          <pattern>%date %X{ip}  %-5level %logger{35} - %message%n</pattern>
        </layout>
    </appender>
<!--  加入email引數 -->
    <root level="info">
        <appender-ref ref="EMAIL"/>  
    </root>

3.java程式碼中log.error打印出來的內容,就會自動傳送到郵件中。傳送延遲在5秒內

4.加入標記,加入evaluator
    <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
        <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
            <marker>sendmail</marker>
        </evaluator>
        <smtpHost>${smtpHost}</smtpHost>  
        <Username>${username}</Username>  
        <Password>${password}</Password>  
        <SSL>${SSL}</SSL>  
        <to>${email_to}</to>  
        <from>${username}</from>  
        <subject>${email_subject}</subject>  
        <asynchronousSending>true</asynchronousSending>
        <layout class="ch.qos.logback.classic.PatternLayout">
          <pattern>%date %X{ip}  %-5level %logger{35} - %message%n</pattern>
        </layout>
    </appender>
    列印時候也加入標記
    logger.error(MarkerFactory.getMarker("sendmail"),"預警傳送:"+e.getMessage());

5.參考資料

http://logback.qos.ch/manual/appenders.html