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

来源:互联网 发布:软件行业资质认证 编辑:程序博客网 时间:2024/05/16 12:37

最近因项目规范,又重新温习了一下这日志框架,大家知道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 loglog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outlog4j.appender.stdout.Threshold=debuglog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.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 packagelog4j.appender.priceLog=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.priceLog.File=E:/stockwin2dc/logs/price/pricelog4j.appender.priceLog.Append=truelog4j.appender.priceLog.Threshold=infolog4j.appender.priceLog.DatePattern=yyyy-MM-dd'.txt'log4j.appender.priceLog.layout=org.apache.log4j.PatternLayoutlog4j.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 packagelog4j.logger.sqlLog= info,sqlExcep# if true ,it will be writed in main log at the same time.log4j.additivity.sqlLog = truelog4j.appender.sqlExcep=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.sqlExcep.File=E:/stockwin2dc/logs/price/sqlExceplog4j.appender.sqlExcep.Append=truelog4j.appender.sqlExcep.ImmediateFlush=truelog4j.appender.sqlExcep.Threshold=errorlog4j.appender.sqlExcep.DatePattern=yyyy-MM-dd'.txt'log4j.appender.sqlExcep.layout=org.apache.log4j.PatternLayoutlog4j.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 packagelog4j.logger.calcLog= info,calcExcep# if true ,it will be writed in main log at the same time.log4j.additivity.calcLog = truelog4j.appender.calcExcep=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.calcExcep.File=E:/stockwin2dc/logs/price/calcExceplog4j.appender.calcExcep.Append=truelog4j.appender.calcExcep.ImmediateFlush=truelog4j.appender.calcExcep.Threshold=errorlog4j.appender.calcExcep.DatePattern=yyyy-MM-dd'.txt'log4j.appender.calcExcep.layout=org.apache.log4j.PatternLayoutlog4j.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 packagelog4j.logger.httpLog= info,httpExcep# if true ,it will be writed in main log at the same time.log4j.additivity.httpLog = truelog4j.appender.httpExcep=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.httpExcep.File=E:/stockwin2dc/logs/price/httpExceplog4j.appender.httpExcep.Append=truelog4j.appender.httpExcep.ImmediateFlush=truelog4j.appender.httpExcep.Threshold=errorlog4j.appender.httpExcep.DatePattern=yyyy-MM-dd'.txt'log4j.appender.httpExcep.layout=org.apache.log4j.PatternLayoutlog4j.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
原创粉丝点击