最近因项目规范,又重新温习了一下这日志框架,大家知道log4j 1.x和log4j 2.x版本有较大的区别,比如log4j 2.0与以往的1.x有一个明显的不同,其配置文件只能采用.xml, .json或者 .jsn,而不支持log4j 1.x常用的配置文件log4j.properties。下面是这几天抽空弄出来的一个log4j 1.2.7版本的log4j.properties配置文件,供参考。
日志包:log4j-1.2.17.jar 和 commons-logging-1.1.1.jar 需要注意的是,如果在创建日记记录器时只是以这方式下面这种方式生成,则此logger调用的是commons-logging-1.1.1.jar 的类实例化日志记录器。反之是log4j
private static Log sqlLog = LogFactory.getLog("sqlLog");
下面是 log4j.properties的具体配置详情
log4j.rootLogger=debug,priceLog,stdout
#instruction:
# private static Log sqlLog = LogFactory.getLog("sqlLog");
# sqlLog.error(e.getMessage(),e);
#Console log
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.Threshold=debug
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd HH:mm:ss.SSS} %5p %C{1}-%L (%t %M) | %m%n
#all log data
# example1 in code: private static Logger sqlLog = Logger.getLog("sqlLog");Logger :from log4j package
# example2 in code: private static Logger sqlLog = LogManager.getLog("sqlLog");Logger :from log4j package
log4j.appender.priceLog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.priceLog.File=E:/stockwin2dc/logs/price/price
log4j.appender.priceLog.Append=true
log4j.appender.priceLog.Threshold=info
log4j.appender.priceLog.DatePattern=yyyy-MM-dd'.txt'
log4j.appender.priceLog.layout=org.apache.log4j.PatternLayout
log4j.appender.priceLog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %5p %C %L (%t %M) | %m%n
#log4j.appender.priceLog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS}-%c{2}-%p %C (%t %M:%L) | %m%n
# sql log
# example in code: private static Log sqlLog = LogFactory.getLog("sqlLog");Log :from apache's common-logging package
log4j.logger.sqlLog= info,sqlExcep
# if true ,it will be writed in main log at the same time.
log4j.additivity.sqlLog = true
log4j.appender.sqlExcep=org.apache.log4j.DailyRollingFileAppender
log4j.appender.sqlExcep.File=E:/stockwin2dc/logs/price/sqlExcep
log4j.appender.sqlExcep.Append=true
log4j.appender.sqlExcep.ImmediateFlush=true
log4j.appender.sqlExcep.Threshold=error
log4j.appender.sqlExcep.DatePattern=yyyy-MM-dd'.txt'
log4j.appender.sqlExcep.layout=org.apache.log4j.PatternLayout
log4j.appender.sqlExcep.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %5p %C %L (%t %M) | %m%n
# calc log
# example in code: private static Log calcLog = LogFactory.getLog("calcLog");Log :from apache's common-logging package
log4j.logger.calcLog= info,calcExcep
# if true ,it will be writed in main log at the same time.
log4j.additivity.calcLog = true
log4j.appender.calcExcep=org.apache.log4j.DailyRollingFileAppender
log4j.appender.calcExcep.File=E:/stockwin2dc/logs/price/calcExcep
log4j.appender.calcExcep.Append=true
log4j.appender.calcExcep.ImmediateFlush=true
log4j.appender.calcExcep.Threshold=error
log4j.appender.calcExcep.DatePattern=yyyy-MM-dd'.txt'
log4j.appender.calcExcep.layout=org.apache.log4j.PatternLayout
log4j.appender.calcExcep.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %5p %C %L (%t %M) | %m%n
# calc log
# example in code: private static Log calcLog = LogFactory.getLog("calcLog");Log :from apache's common-logging package
log4j.logger.httpLog= info,httpExcep
# if true ,it will be writed in main log at the same time.
log4j.additivity.httpLog = true
log4j.appender.httpExcep=org.apache.log4j.DailyRollingFileAppender
log4j.appender.httpExcep.File=E:/stockwin2dc/logs/price/httpExcep
log4j.appender.httpExcep.Append=true
log4j.appender.httpExcep.ImmediateFlush=true
log4j.appender.httpExcep.Threshold=error
log4j.appender.httpExcep.DatePattern=yyyy-MM-dd'.txt'
log4j.appender.httpExcep.layout=org.apache.log4j.PatternLayout
log4j.appender.httpExcep.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %5p %C %L (%t %M) | %m%n
###insert to mysql db###
#log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
#log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
#log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
#log4j.appender.DATABASE.user=root
#log4j.appender.DATABASE.password=
#log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES (\u2019[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n\u2019)
#log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
#log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
JAVA 代码
package com.example.system;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.Logger;
/**
* 功能描述:log4j.properties-example1文件去年后辍多余部分后放于src根目录下,不用初始化此日志配置文件,
* 导入log4j-1.2.17.jar和commons-logging-1.1.1.jar包运行程序即可。
* 1、log4j.additivity.为true时,此子日志记录器的信息会同时往根日志记录器输出。
* 2、子日志记录器中log4j.logger.httpLog= info,httpExcep,log4j.appender.httpExcep.Threshold=error
* 前面的info是此子日志的输出等级开关,后面的error是此子日志输出日志文件的实际开关,
* 级此子日志文件只输入高于error的信息,高于等于 info的则往根日记文件输出。
* @author Huanyan.Lu
* @date:2015年12月23日
* @time:下午5:36:06
* @version:1.0
*/
public class Example1 {
private static Log sqlLog = LogFactory.getLog("sqlLog");
private static Log calcLog = LogFactory.getLog("calcLog");
private static Logger logger = Logger.getLogger(Example1.class);
public static void main(String[] args) throws Exception{
//放src根目录下,自动加载不需要再额外加载配置文件
// DOMConfigurator.configure("E:/study/log4j/log4j.xml");//加载.xml文件
//PropertyConfigurator.configure("E:/study/log4j/log4j.properties");//加载.properties文件
int a =8;
int b =0;
int c =0;
try{
c=a/b;
}catch(Exception e){
calcLog.error(e.getMessage(),e);//此方法可以打印出完整的异常堆栈信息
}
while(true){
sqlLog.error("11111111111");
sqlLog.info("000000000000");
calcLog.error("22222222222");
logger.info("33333333333");
Thread.sleep(1000);
}
}
}
参考资料:http://www.codeceo.com/article/log4j-usage.html