LOG4J 配置 Email

/** 在用log4j把错误信息通过邮箱发送邮件,因为要发送邮件,所以要导入mail.jar **/

//下面是log4j.properties配置文件
log4j.rootLogger=ERROR,CONSOLE,FILE,MAIL
#DEBUG,CONSOLE,FILE,ROLLING_FILE,MAIL,DATABASE
<!--log4j.logger.org.hibernate.type=trace-->
log4j.addivity.org.apache=true


###################
# Console Appender
###################
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=error
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[TestFTP] %d - %c -%-4r [%t] %-5p %c %x - %m%n
#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n


#####################
# File Appender
#####################
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${TestFTP.root}/testFtp.log 
log4j.appender.FILE.Append=true
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[TestFTP] %d - %c -%-4r [%t] %-5p %c %x - %m%n
# Use this layout for LogFactor 5 analysis



########################
# Rolling File
########################
log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLING_FILE.Threshold=INFO
log4j.appender.ROLLING_FILE.File=${TestFTP.root}/TestFTP-rolling.log
log4j.appender.ROLLING_FILE.Append=true
log4j.appender.ROLLING_FILE.MaxFileSize=100KB
log4j.appender.ROLLING_FILE.MaxBackupIndex=1
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[TestFTP] %d - %c -%-4r [%t] %-5p %c %x - %m%n


########################
# SMTP Appender(需要用户名和密码,还要有【javax.mail】jar包)
#######################
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
## 错误级别
log4j.appender.MAIL.Threshold=FATAL 
log4j.appender.MAIL.BufferSize=10
log4j.appender.MAIL.From=cfd406635982@126.com
log4j.appender.MAIL.SMTPHost=smtp.126.com
log4j.appender.MAIL.SMTPUsername=cfd406635982@126.com
log4j.appender.MAIL.SMTPPassword=XXXXX(密码)
## 邮件主题
log4j.appender.MAIL.Subject=Messsage From LOG4J
log4j.appender.MAIL.To=java_boy@126.com
log4j.appender.MAIL.layout=com.ftp.server.MyPatternLayout
log4j.appender.MAIL.layout.ConversionPattern=[ErrorMessage] %d - %c -%-4r [%t] %-5p %c %x - %m%n

上面的邮件发送:log4j.appender.MAIL.layout=com.ftp.server.MyPatternLayout

package com.ftp.server;

import org.apache.log4j.PatternLayout;

public class MyPatternLayout extends PatternLayout {

	@Override
	public String getContentType() {
		return "text/html;CHARSET=utf8"; //设定字符集
	}
}

/** 因为在把错误信息发功到邮件的时候,中文会出现乱码,所以从
 * PatternLayout 继承,并且重写getCotentType方法,并且把字符集设置为utf-8
 * 因为在PatternLayout 中 是直接return "text/html;"; 
 **/
 
 
//在项目中使用就比较简单了: 
//Logger logger = Logger.getLogger(this.getClass());
//logger.fatal("连接服务器发生错误: ", e);
//发现了一个原本就有的方法来解决中文乱码问题
//即使在properties中加入:
//log4j.appender.MAIL.Encoding=UTF-8
下面贴出网上找的比较全的一个配置(不同级别的信息存放到不同的文件):
log4j.rootLogger=INFO,console,info,warn,error,fatal

log4j.appender.console
=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout
=org.apache.log4j.PatternLayout
log4j.appender.console.Encoding
=GBK
log4j.appender.console.layout.ConversionPattern
=[%p] [%d{yyyy-MM-dd HH:mm:ss}] [ Class = %C | Method = %M | Line = %L ] | %m |%n

log4j.logger.info
=info
log4j.appender.info
=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.layout
=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern
=[%p] [%d{yyyy-MM-dd HH:mm:ss}] [ Class = %C | Method = %M | Line = %L ] | %m |%n
log4j.appender.info.datePattern
='.'yyyy-MM-dd
log4j.appender.info.Threshold
=INFO
log4j.appender.info.append
=true
log4j.appender.info.Encoding
=GBK
log4j.appender.info.File
=${loghome}//log/bpsoft_info.log

#log4j.logger.debug
=debug
#log4j.appender.debug
=org.apache.log4j.DailyRollingFileAppender
#log4j.appender.debug.layout
=org.apache.log4j.PatternLayout
#log4j.appender.debug.layout.ConversionPattern
=[%p] [%d{yyyy-MM-dd HH:mm:ss}] [ Class = %C | Method = %M | Line = %L ] | %m |%n
#log4j.appender.debug.datePattern
='.'yyyy-MM-dd
#log4j.appender.debug.Threshold
=DEBUG
#log4j.appender.debug.append
=true
#log4j.appender.debug.Encoding
=GBK
#log4j.appender.debug.File
=${loghome}/log/bpsoft_debug.log

log4j.logger.warn
=warn
log4j.appender.warn
=org.apache.log4j.DailyRollingFileAppender
log4j.appender.warn.layout
=org.apache.log4j.PatternLayout
log4j.appender.warn.layout.ConversionPattern
=[%p] [%d{yyyy-MM-dd HH:mm:ss}] [ Class = %C | Method = %M | Line = %L ] | %m |%n
log4j.appender.warn.datePattern
='.'yyyy-MM-dd
log4j.appender.warn.Threshold
=WARN
log4j.appender.warn.append
=true
log4j.appender.warn.Encoding
=GBK
log4j.appender.warn.File
=${loghome}/log/bpsoft_warn.log

log4j.logger.error
=error
log4j.appender.error
=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.layout
=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern
=[%p] [%d{yyyy-MM-dd HH:mm:ss}] [ Class = %C | Method = %M | Line = %L ] | %m |%n
log4j.appender.error.datePattern
='.'yyyy-MM-dd
log4j.appender.error.Threshold
=ERROR
log4j.appender.error.append
=true
log4j.appender.error.Encoding
=GBK
log4j.appender.error.File
=${loghome}/log/bpsoft_error.log

log4j.logger.fatal
=fatal
log4j.appender.fatal
=org.apache.log4j.DailyRollingFileAppender
log4j.appender.fatal.layout
=org.apache.log4j.PatternLayout
log4j.appender.fatal.layout.ConversionPattern
=[%p] [%d{yyyy-MM-dd HH\:mm\:ss}] [ Class \= %C | Method \= %M | Line \= %L ] | %m |%n
log4j.appender.fatal.datePattern
='.'yyyy-MM-dd
log4j.appender.fatal.Threshold
=FATAL
log4j.appender.fatal.append
=true
log4j.appender.fatal.Encoding
=GBK
log4j.appender.fatal.File
=${loghome}/log/bpsoft_fatal.log
#The log output to the directory
loghome
=d:/




//=====================工具类
public final class LogUtil {

private final static String LOGHOME="loghome";

static{
try{
Properties prop
=ConfigUtil.getResource("log4j.properties");
PropertyConfigurator.configure(prop);
String loghome
=prop.getProperty(LOGHOME);
if(StringUtil.isValidateString(loghome)){
System.setProperty(LOGHOME, StringUtil.checkString(loghome));
}
}
catch(Exception e){
e.printStackTrace();
}
}
/**日志对象实例*/
private static Logger instance=null;

/**获得当前对象实例静态方法*/
public static Logger getDefaultInstance(){
if(instance==null){
synchronized(LogUtil.class){
if(instance==null){//如果没有这个判断,当两个线程同时访问这个方法会出现创建两个对象
instance=Logger.getLogger("LOGGER");
}
}
}
return instance;
}
/**
* 依据不同类的Class对象创建不同的Logger类对象
*
@param clazz
*
@return
*/
@SuppressWarnings(
"unchecked")
public static Logger getInstance(Class clazz){
if(clazz==null){
return null;
}
return Logger.getLogger(clazz);
}
/**
* 依据累的全名来创建Logger类对象
*
@param className
*
@return
*/
public static Logger getInstance(String className){
if(className==null){
return null;
}
return Logger.getLogger(className);
}

}
posted on 2011-05-10 21:58  cfd406635982  阅读(3012)  评论(0编辑  收藏  举报