log4j发送格式化邮件以及解决邮件乱码

系统上线运行中如果发生了异常错误可以通过如下 log4j配置发送邮件到指定的邮箱,来分析了解系统异常运行情况信息来定位问题。

package com.mttang.js.auth.util;

import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;

import org.apache.log4j.PatternLayout;
import org.apache.log4j.spi.LoggingEvent;
 

/**
 * 系统发生错误发送通知邮件格式化(解决邮件内容乱码以及格式化)
 * @author caojian
 *
 */
public class Log4jMailLayout extends PatternLayout{  
      

    StringBuffer sbuf = new StringBuffer(BUF_SIZE);  
    @Override    
    public String getContentType()   
    {     
        return "text/html;charset=UTF-8";  //处理乱码
    }  
 
    @Override  
    public String format(LoggingEvent event)   
    {  
        if(sbuf.capacity() > MAX_CAPACITY) {
              sbuf = new StringBuffer(BUF_SIZE);
        } else {
              sbuf.setLength(0);
        }
        sbuf.append("<pre>服务器域名 : www.baoshengdianzi.com  ");
        sbuf.append("<pre>服务器IP地址 : "+getLocalIP()+"<BR/>");
        sbuf.append("错误等级 : "+event.getLevel().toString()+"<BR/>");  
        sbuf.append("错误所在类 : "+event.getLocationInformation().getClassName()+"<BR/>");  
        sbuf.append("错误方法所在 : "+event.getLocationInformation().getMethodName()+"<BR/>");  
        sbuf.append("错误行 : "+event.getLocationInformation().getLineNumber()+"<BR/>"); 
        sbuf.append("错误原因 : <pre>"+super.format(event)+"<pre><BR/></pre>");  
        
        return sbuf.toString();  
    }  

    /**
     * 获取本机IP
     * @return
     */
    private static String getLocalIP() 
    {
          
        String ip = " http://www.baoshengdianzi.com ";
           try 
           {
               Enumeration<NetworkInterface> networkInterfaces =  NetworkInterface.getNetworkInterfaces();
               while (networkInterfaces.hasMoreElements()) 
               {
                   NetworkInterface ni = networkInterfaces.nextElement();
                   if(ni.getName().equals("eth0"))
                   {
                       Enumeration<InetAddress> inetAddresses = ni.getInetAddresses();
                       while (inetAddresses.hasMoreElements()) 
                       {
                           InetAddress ia = inetAddresses.nextElement();
                           if (ia instanceof Inet6Address){
                               continue; 
                           }
                           ip = ia.getHostAddress();
                       }
                       break;
                   }
               }
           } 
           catch (SocketException e) 
           {
              ip = e.getMessage();
           }
           
           return ip;
    }

}  





log4j发送邮件XML文件配置
<appender class="org.apache.log4j.net.SMTPAppender">
    <param value="FATAL" />
    <param value="512" /><!-- Unit K -->
    <param value="[email protected]" />
    <param value="qq.mttang.com" />
    <param value="system is error" />
    <param value="[email protected]" />
    <param value="[email protected]" />
    <param value="123" />
    <layout class=" com.mttang.js.auth.util.Log4jMailLayout"/>
</appender>

log4j发送邮件属性文件(properties)配置
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.Threshold=ERROR
log4j.appender.MAIL.BufferSize=512
log4j.appender.MAIL.SMTPHost=aaa.mttang.com
log4j.appender.MAIL.Subject=http://www.baoshengdianzi.com  is error.
[email protected]
[email protected]
log4j.appender.MAIL.SMTPPassword=123
[email protected]
log4j.appender.MAIL.layout= com.mttang.js.auth.util.Log4jMailLayout
log4j.appender.MAIL.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n

金属膜电阻供应商 http://wwww.baoshengdianzi.com

猜你喜欢

转载自baoshengdianzi.iteye.com/blog/1835537