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);
//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);
}
}