【转载】Log4j之高级配置

绝大多数的Java项目记录日志都是使用Log4j,简单的配置网上有很详细的教程。当项目变得复杂,比如分很多模块,很多层次,很多通信方式时,需要把不同模块或者不同层次或者不同通信方式的日志记录到不同的文件输出。本文就介绍如何配置Log4j以满足以上需求。

      Log4j日记记录过程可以拆解为日志来源以及日志的输出地之间的关系。日志的来源与日志输出完全独立,可以是多对多的关系。说得简单一点就是,代码里面的一条日志可以输出到多个输出目的地(控制台,all.log文件, A1.log文件等),反过来一个输出目的地可以接纳来源于多个地方的日志。Java里面代码都在package和class下面,所以来源可以通过package或者class进行定位,确定来源于什么地方。然后将该日志来源记录到希望记录的输出地即可。举个例子吧,加入项目中持久化层用到了iBatis开源项目,iBatis也会通过Log4j来记录它的操作日志,现在想把iBatis输出的日志都记录到一个iBatis.log文件中,不要跟项目的代码混到一起。 还有,现在希望有一个error.log文件来记录所有的出错信息,不是出错的不记录。 观察以上两个例子,强调的都是日志来源和输出的个性化,只是后者的来源是全部。下面先上Log4j配置文件:

 

### set root log ###
log4j.rootLogger = INFO , CONSOLE, ALL, ERROR


### console log ###
log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target = System.out
log4j.appender.CONSOLE.Threshold = INFO
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = %t  %d{yyyy-MM-dd HH:mm:ss,SSS}  %l  %M  %5p  %m%n


### all information log ###
log4j.appender.ALL = org.apache.log4j.DailyRollingFileAppender
log4j.appender.ALL.File = logs/all.log
log4j.appender.ALL.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.ALL.Threshold = INFO
log4j.appender.ALL.layout = org.apache.log4j.PatternLayout
log4j.appender.ALL.layout.ConversionPattern = %t  %d{yyyy-MM-dd HH:mm:ss,SSS}  %l  %M  %5p  %m%n

### error log ###
log4j.appender.ERROR = org.apache.log4j.DailyRollingFileAppender
log4j.appender.ERROR.File = logs/error.log
log4j.appender.ERROR.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.ERROR.Threshold = ERROR
log4j.appender.ERROR.layout = org.apache.log4j.PatternLayout
log4j.appender.ERROR.layout.ConversionPattern = %t  %d{yyyy-MM-dd HH:mm:ss,SSS}  %l  %M  %5p  %m%n


### iBatis log ###
log4j.appender.IBATIS = org.apache.log4j.DailyRollingFileAppender
log4j.appender.IBATIS.File = logs/ibatis.log
log4j.appender.IBATIS.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.IBATIS.Threshold = DEBUG
log4j.appender.IBATIS.layout = org.apache.log4j.PatternLayout
log4j.appender.IBATIS.layout.ConversionPattern = %t  %d{yyyy-MM-dd HH:mm:ss,SSS} %5p  %m%n

log4j.logger.com.ibatis = DEBUG , CONSOLE , ALL, ERROR, IBATIS
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource = DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner = DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate = DEBUG
log4j.logger.java.sql.Connection = DEBUG
log4j.logger.java.sql.Statement = DEBUG
log4j.logger.java.sql.PreparedStatement = DEBUG, CONSOLE , ALL, IBATIS


日志的来源和输出都可以设定日志级别。以iBatis为例,  log4j.logger.com.ibatis = DEBUG指定 ibatis包级别一下的日志来源日志级别为DUBUG,这样就能够看到SQL信息。再看error日志的配置,log4j.appender.ERROR.Threshold = ERROR指定输出的日志级别是ERROR,该输出目的地只记录出错信息。 像一根水管上的两个水龙头,出水的多少决定于流量小的那个水龙头。Log4j里面日志的记录是决定于级别高的那一个。上面还配有all.log输出,可以完整的在一个地方找到所有的日志。

  

    通过以上方式可以灵活定制日志策略,项目的日志参照iBatis的配置方法配置即可。对后需要提醒的是最好为开发环境可生成环境配置不同的日志策略。输出级别和输出地都可能不同! 应该有两个Log4j文件, log4j-pro.properties和log4j-dev.properties,分别对应于生产环境和开发环境。

 

文章转自: http://blog.csdn.net/kimylrong/article/details/7670245
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值