`
cao_jian
  • 浏览: 7986 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

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="system@mttang.com" />
    <param value="qq.mttang.com" />
    <param value="system is error" />
    <param value="caojian@mttang.com" />
    <param value="system@mttang.com" />
    <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.
log4j.appender.MAIL.From=bbbb@mttang.com
log4j.appender.MAIL.SMTPUsername=aaaa@mttang.com
log4j.appender.MAIL.SMTPPassword=123
log4j.appender.MAIL.To=ccc@mttang.com
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
分享到:
评论

相关推荐

    log4delphi 0.8 for XE2 (解决中文乱码问题)

    **log4delphi 0.8 for XE2 解决中文乱码问题详解** `log4delphi` 是一个基于 Delphi 开发的开源日志记录框架,它为 Delphi 应用程序提供了灵活的日志记录功能。这个框架是受到了 Java 语言中的 `log4j` 的启发,为 ...

    log4j中文手册(中文版)

    这三者相互配合,共同实现日志的记录、存储以及格式化功能。 - **Logger**:负责日志记录的主要操作。 - **Appender**:决定日志信息的输出目的地。 - **Layout**:定义日志输出的格式。 #### 2. Logger - **...

    Log4j手册

    ### Log4j手册详解 #### 1. 概述与主要组件 Log4j是一款功能强大的日志框架,用于简化应用程序中的日志记录过程。它提供了灵活的日志记录功能,允许开发者根据不同的需求和场景调整日志的输出级别、格式以及目的地...

    Code::Blocks Build log乱码

    标题中的"Code::Blocks Build log乱码"是一个关于在使用Code::Blocks这款开源集成开发环境(IDE)时遇到的问题,具体表现为编译构建日志显示为乱码。这通常是由于字符编码设置不正确或者系统环境变量配置不当所引起的...

    Log4j中文手册

    ### Log4j中文手册知识点详解 #### 1. 概述 Log4j是一个功能强大的日志记录工具,广泛应用于Java应用程序中。该手册详细介绍了Log4j的基本概念及其使用方法,适合初学者及进阶用户参考。 #### 1.1 日志记录的重要...

    jboss eap 6.2或as 7 以上乱码问题解决

    ### jBoss EAP 6.2 或 AS 7 以上乱码问题解决 #### 背景介绍 在使用jBoss Enterprise Application Platform (EAP) 6.2 或 jBoss Application Server (AS) 7及以上版本的过程中,可能会遇到字符编码问题,即所谓的...

    mybatis乱码的解决方法

    5. **日志配置**:根据日志输出的需求,如使用Log4j或SLF4J,配置相应的日志编码参数,确保日志打印的正确性。 6. **i18n配置**:对于国际化文件,如properties或xml格式,确保文件本身和读取方式都使用了正确的...

    小程序蓝牙打印--中文乱码已解决

    总之,解决微信小程序蓝牙打印中文乱码问题,核心在于正确地编码和发送数据,同时理解蓝牙设备和小程序蓝牙API的工作机制。通过合理的编程实践和充分的测试,可以确保安卓设备上的蓝牙打印功能正常且无乱码。

    struts2+freemarker+log4j

    Struts2、Freemarker和Log4j是Java Web开发中的三个重要组件,它们各自扮演着不同的角色。这里,我们来深入探讨这三个技术的核心概念及其整合应用。 **Struts2** 是一个开源的MVC(Model-View-Controller)框架,...

    log4net日志记录

    本文将详细介绍如何在Visual Studio 2013环境下使用log4net进行日志记录,以及如何将日志记录到文本文件和SQL Server数据库。 首先,我们需要了解log4net的基本使用原理。log4net提供了一个灵活的日志框架,允许...

    java多种解决乱码方案详细资料大全

    - 日志框架如Log4j,可以在配置文件中设置编码:`&lt;layout class="org.apache.log4j.PatternLayout"&gt;&lt;param name="ConversionPattern" value="%d{ABSOLUTE} %-5p %c{1}:%L - %m%n"/&gt;&lt;/layout&gt;`,并在日志输出文件中...

    解决各种乱码

    Java的标准输出流和错误输出流默认使用平台默认编码,可以通过重定向System.out和System.err,或者使用第三方库如Log4j,指定输出编码。 总结来说,解决Java中的乱码问题关键在于明确字符编码的使用和转换。理解...

    WEBSPHERE乱码问题的解决和处理

    - **日志记录**:确保日志记录工具(如Log4j)的配置文件中指定了正确的字符编码。 #### 三、案例实践 以修改JVM参数为例,假设当前的启动命令如下: ``` /opt/IBM/WebSphere/AppServer/java/bin/java -Declipse....

    Json操作及中文乱码解决方案

    例如,以下代码展示了如何使用Gson将包含中文的Java对象转换为JSON字符串,以及如何从JSON字符串反序列化回对象: ```java import com.google.gson.Gson; public class User { private String name; // 构造器、...

    工作流乱码解决方案

    6. **日志和异常信息**:日志和异常信息也可能出现乱码,确保日志框架(如Log4j或Logback)的配置文件中指定UTF-8编码。 7. **数据库连接池配置**:如果你使用了数据库连接池(如C3P0或HikariCP),需要检查连接池...

    网页获取JSON中文返回乱码解决方案(java + js)

    但有时,如果数据直接在控制台`console.log()`或者`alert()`中显示,可能因为浏览器默认的编码设置导致乱码。此时,我们可以使用自定义的函数来处理,例如提供的`unicodeconvert.js`文件中的方法: ```javascript ...

    格式化输出(针对编码)

    "格式化输出(针对编码)"这个主题正是关注如何正确地处理和显示这些数据,以避免乱码或无法识别的问题。以下是对这个主题的详细解释: 1. **编码的概念**: 编码是将字符转换为数字的过程,以便计算机可以理解和...

    Azure webapp中日志乱码说明1

    要解决log4net的日志乱码问题,你需要在log4net的配置文件(通常是`log4net.config`)中添加编码设置。例如,你可以指定`Encoding="utf-8"`,如下所示: ```xml &lt;appender name="ConsoleAppender" type="log4...

    更新后的LOG.zip

    4. **两种解决出现时间乱码问题**:在处理日志时,有时会遇到时间显示不正常或乱码的情况,这可能是由于时区设置不正确、编码格式不一致或日期时间格式化错误导致的。解决这类问题的方法可能包括调整系统的时区设置...

Global site tag (gtag.js) - Google Analytics