`

Log4j 发送email 的 SMTPAppender 的配置

阅读更多
    项目上线后,运行时往往也还会有异常发生,在异常抛出时,后台的相关人员希望即时的得到反馈。所以需要配置LOG4J的发送EMAIL功能。

      项目中原来使用的的Log4j版本为1.2.9,但此版本并不支持邮件服务的认证功能 ,
如果需要认证,可能需要自己重写一下SMTPAppender,添加一下认证的功能. 例如:
package org.apache.log4j.net;

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

import java.util.Properties;

import org.apache.log4j.helpers.LogLog;

public class AuthSMTPAppender extends SMTPAppender {

/**
* SimpleAuthenticator is used to do simple authentication when the SMTP
* server requires it. It pulls the username and password from
* log4j.properties or where appropriate.
*/
private class SMTPAuthenticator extends javax.mail.Authenticator {

public PasswordAuthentication getPasswordAuthentication() {

String username = _user;
String password = _password;
return new PasswordAuthentication(username, password);
}
}

private String _user;

private String _password;

public String getUser() {
return _user;
}

public void setUser(String user) {
_user = user;
}

public String getPassword() {
return _password;
}

public void setPassword(String password) {
_password = password;
}

/**
* Overrode activeOptions() to have authentication
*/
public void activateOptions() {
Properties props = new Properties(System.getProperties());
if (getSMTPHost() != null) {
props.put("mail.smtp.host", getSMTPHost());
}

// New authentication bit
props.put("mail.smtp.auth", "true");
Authenticator auth = new SMTPAuthenticator();
Session session = Session.getInstance(props, auth);
// Session session = Session.getInstance(props, null);

// session.setDebug(true);
msg = new MimeMessage(session);

try {
if (getFrom() != null) {
msg.setFrom(getAddress(getFrom()));
} else {
msg.setFrom();
}

msg.setRecipients(Message.RecipientType.TO, parseAddress(getTo()));
if (getSubject() != null) {
msg.setSubject(getSubject());
}
} catch (MessagingException e) {
e.printStackTrace();
LogLog.error("Could not activate SMTPAppender options.", e);
}
}
}


方法二下载了最新的版本1.2.15 ,此版本支持认证功能 ,下面是 log4j.properties 的具体配置 :

##ROOT
log4j.rootLogger=INFO,CONSOLE,A_default,MAIL

## CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=INFO
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
#log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
log4j.appender.CONSOLE.layout.ConversionPattern=[调试信息]%-5p %c %x - %m%n

## A_default
log4j.appender.A_default=org.apache.log4j.RollingFileAppender
log4j.appender.A_default.Threshold=INFO
log4j.appender.A_default.File=${webframe.root}/WEB-INF/logs/railstone.log
log4j.appender.A_default.MaxFileSize=4000KB
log4j.appender.A_default.MaxBackupIndex=10
log4j.appender.A_default.layout=org.apache.log4j.PatternLayout
log4j.appender.A_default.layout.ConversionPattern=[调试信息]%-5p %c %x - %m%n

## MAIL
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
# 日志的错误级别
log4j.appender.MAIL.Threshold=ERROR
# 缓存文件大小,日志达到512K时发送Email
log4j.appender.MAIL.BufferSize=512
# 发送邮件的服务器log4j.appender.MAIL.SMTPHost=smtp.163.com
# 邮件的标题
log4j.appender.MAIL.Subject=Log4J ErrorMessage
# 用户名
log4j.appender.MAIL.SMTPUsername=邮箱用户名
# 密码
log4j.appender.MAIL.SMTPPassword=邮箱密码
# 发件人地址
log4j.appender.MAIL.From=test@163.com
# 日志邮件的接收者
log4j.appender.MAIL.To=test@163.com
# 日志PatternLayout
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
# 日志的格式log4j.appender.MAIL.layout.ConversionPattern=[ErrorMessage] %d - %c -%-4r [%t] %-5p %c %x - %m%n

     另外的一个问题是,LOG4J发送的邮件存在中文乱码的问题,所以将 原来的 [错误信息] %d - %c -%-4r [%t] %-5p %c %x - %m%n 修改为现在的 [ErrorMessage] %d - %c -%-4r [%t] %-5p %c %x - %m%n 。



PS:http://www.blogjava.net/wml/archive/2006/09/21/71035.html(原贴地址)
分享到:
评论
3 楼 tianhandigeng 2011-11-04  
这两种方法真的可以吗?第一种方法 getAddress和parseAddress都不知道在哪 第二种方法测试了也不成功
2 楼 poeao 2010-11-20  
嗯 没错

1 楼 Neoman 2010-11-15  
1.2.14开始支持邮件认证的

相关推荐

    log4j 发送邮件配置实例

    保存配置后,当系统出现error级别的日志时,Log4j会自动通过SMTPAppender发送一封包含错误信息的电子邮件到指定的收件人。为了确保配置有效,你可以故意触发一个error,然后检查是否收到了邮件。 通过以上配置,...

    log4j 发送邮件

    2. **Log4j配置**:要使用Log4j发送邮件,首先需要在项目的配置文件(通常是`log4j.properties`或`log4j.xml`)中添加适当的配置,包括设置SMTP服务器信息、发件人和收件人地址,以及触发发送邮件的日志级别。...

    log4j实用配置扩展

    ### log4j实用配置扩展 #### 一、log4j简介与重要性 Log4j是一种广泛使用的开源日志框架,由Apache软件基金会维护。它主要用于记录Java应用程序的运行时信息,帮助开发者追踪应用程序的行为、调试问题以及进行性能...

    javaweb配置Log4j发送日志邮件------全面

    本教程将详细介绍如何配置Log4j来实现日志信息通过电子邮件发送,以便于及时获取系统异常或关键事件的通知。 首先,我们需要理解Log4j的基本架构。Log4j包括三个核心组件:Logger(日志器)、Appender(输出器)和...

    log4j.jar包,和log4j.properties配置文件下载

    Log4j是一个广泛使用的Java日志记录框架,它允许开发者在应用程序中插入日志语句,以便跟踪程序的...它通过`log4j.jar`提供核心功能,通过`log4j.properties`进行个性化配置,为开发者提供了一套完整的日志解决方案。

    Log4j 邮件配置

    要配置SMTPAppender,你需要在`log4j.properties`或`log4j.xml`配置文件中添加相关设置。主要的配置属性包括: - `SMTPHost`: 指定SMTP服务器地址,例如`smtp.gmail.com`。 - `To`: 收件人邮箱地址,可以是单个或...

    log4j 不同级别 不同文件 发送邮件配置

    在这个特定的配置场景中,我们将探讨如何设置log4j,使其能将不同级别的日志信息分别记录到不同的文件中,并且具备发送邮件通知的能力。 首先,我们需要创建一个log4j的配置文件,通常命名为`log4j.properties`。这...

    Spring项目中怎么配置log4j

    log4j.appender.A1=org.apache.log4j.net.SMTPAppender log4j.appender.A1.To=your-email@example.com log4j.appender.A1.From=no-reply@example.com log4j.appender.A1.SMTPHost=smtp.example.com log4j....

    log4j配置文档【非常详细】

    此外,Log4j还支持多种Appenders,如FileAppender、ConsoleAppender、SMTPAppender等,它们决定了日志信息的输出位置,比如控制台、文件、电子邮件等。通过这些Appenders,你可以实现日志的集中管理和监控。 总之,...

    log4j发送邮件log4j1.2.16.jar、mail.jar、activation.jar

    <appender name="EMAIL" class="org.apache.log4j.net.SMTPAppender"> <param name="Subject" value="Log4j Error Report"/> <layout class="org.apache.log4j.PatternLayout"> ``` 然后,`mail.jar`...

    log4j-1.2.17.jar及配置文件

    《log4j-1.2.17.jar及其配置文件详解》 在IT行业中,日志记录是一项至关重要的任务,它能帮助开发者追踪程序运行状况、定位错误和调试问题。Log4j,作为Apache软件基金会的一个开源项目,是Java平台上广泛使用的...

    Log4j日志包

    log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender log4j.appender.MAIL.BufferSize=10 log4j.appender.MAIL.From=wisdom_xw@163.com log4j.appender.MAIL.SMTPHost=smtp.163.com log4j.appender.MAIL.SMTP...

    关于Log4j比较全面的配置

    Log4j的SMTPAppender能够实现这一功能,通过`log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender`配置。其中`log4j.appender.MAIL.Threshold=FATAL`表示只有FATAL级别的日志才会触发邮件发送,`log4j.appender....

    Log4j+使用方法+配置文件log4j.properties

    本文将详细介绍Log4j的使用方法以及配置文件`log4j.properties`的设置。 1. **Logger** Logger是日志信息的源头,它是Log4j中最基本的类。通过创建Logger实例,你可以为不同的类或模块分配不同的日志级别,如DEBUG...

    log4j日志驱动包

    Log4j比较全面的配置 log4j.rootLogger=DEBUG,CONSOLE,A1,im log4j.addivity.org.apache=true # 应用于控制台 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.Threshold=DEBUG log4j....

    Log4j 详细配置

    Log4j 提供了多种 Appender,如 ConsoleAppender(控制台输出)、FileAppender(文件输出)、SMTPAppender(邮件发送)等。每个 Appender 都有自己的配置属性,如文件名、是否追加、日志格式等。 ### 6. Layout ...

    log4j-1.2.15.jar

    2. **配置灵活性**:通过配置文件(通常为log4j.properties或log4j.xml),开发者可以灵活控制日志的级别(DEBUG, INFO, WARN, ERROR, FATAL)以及输出目的地(控制台、文件、数据库等)。 3. **多种Appender**:...

    log4j的jar包以及配置文件

    在"压缩包子文件的文件名称列表"中没有具体的配置文件,但通常来说,Log4j的配置文件名为`log4j.properties`或`log4j.xml`。以下是一个简单的`log4j.properties`配置示例: ``` # 设置root logger级别为INFO,输出...

    Log4j配置文件详细说明

    首先,Log4j的配置文件通常是`log4j.properties`或`log4j.xml`,用于定义日志输出的行为。这里我们主要讨论基于文本格式的`log4j.properties`。在这个文件中,你可以设置不同的日志级别(DEBUG, INFO, WARN, ERROR, ...

    一个比较全的的log4j配置文件

    根据提供的标题、描述、标签及部分内容,我们可以详细探讨关于log4j配置文件的相关知识点,特别是如何通过各种Appender实现日志记录的不同需求。 ### 一、log4j配置文件概述 log4j是一款非常强大的日志框架,它...

Global site tag (gtag.js) - Google Analytics