log4j 1.2 版本实现多日志文件的例子

最近因项目规范,又重新温习了一下这日志框架,大家知道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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值