项目上线后,运行时往往也还会有异常发生,在异常抛出时,后台的相关人员希望即时的得到反馈。所以需要配置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(原贴地址)
分享到:
相关推荐
log4j.appender.email=org.apache.log4j.net.SMTPAppender log4j.appender.email.SMTPHost=smtp.example.com log4j.appender.email.Port=587 log4j.appender.email.Subject=Error Notification log4j.appender....
2. **Log4j配置**:要使用Log4j发送邮件,首先需要在项目的配置文件(通常是`log4j.properties`或`log4j.xml`)中添加适当的配置,包括设置SMTP服务器信息、发件人和收件人地址,以及触发发送邮件的日志级别。...
配置Log4j发送日志邮件主要涉及以下几个步骤: 1. **配置log4j.properties文件**:这是Log4j的配置文件,我们需要在这里定义Appender。添加以下内容: ```properties # 定义一个SMTP Appender log4j.appender.SMTP...
在这个特定的配置场景中,我们将探讨如何设置log4j,使其能将不同级别的日志信息分别记录到不同的文件中,并且具备发送邮件通知的能力。 首先,我们需要创建一个log4j的配置文件,通常命名为`log4j.properties`。这...
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-1.2.16.jar、mail.jar和activation.jar这三个关键文件。 Log4j是一个开源的日志框架,最初由Apache软件基金会开发。它为Java应用程序提供了灵活的日志记录...
log4j.appender.Email=org.apache.log4j.net.SMTPAppender log4j.appender.Email.SMTPHost=smtp.example.com log4j.appender.Email.From=test@example.com log4j.appender.Email.To=user@example.com log4j.appender...
log4j.appender.EMAIL=org.apache.log4j.net.SMTPAppender log4j.appender.EMAIL.BufferSize=1 log4j.appender.EMAIL.To=user@example.com log4j.appender.EMAIL.From=logger@example.com log4j.appender.EMAIL....
为了实现这个功能,首先需要在Log4j的配置文件(通常是log4j.properties或log4j.xml)中设置一个Appender(日志输出器),这个Appender类型是SMTPAppender,用于发送邮件。SMTPAppender需要配置SMTP服务器的地址、...