log4j.properties 文件:

log4j.logger.net.sf.hibernate.cache=debug

log4j.rootLogger = error,portal_log,shop_log

log4j.appender.ROLLING_FILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ROLLING_FILE.File=/logs/PT.log
log4j.appender.ROLLING_FILE.DatePattern='.'yyyy-MM-dd'.log'
#log4j.appender.ROLLING_FILE.Append=true
#log4j.appender.ROLLING_FILE.MaxFileSize=50MB
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

log4j.logger.portal_log=INFO, portal_log
log4j.appender.portal_log=com.aisino.global.context.common.logs.MyAppender
log4j.appender.portal_log.Append=true
log4j.appender.portal_log.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.portal_log.File=/logs/portal_log.log
log4j.appender.portal_log.Threshold=INFO
log4j.appender.portal_log.layout=org.apache.log4j.PatternLayout
log4j.appender.portal_log.layout.ConversionPattern=%m%n
log4j.additivity.portal_log=false

log4j.logger.shop_log=INFO, shop_log
log4j.appender.shop_log=com.aisino.global.context.common.logs.MyAppender
log4j.appender.shop_log.Append=true
log4j.appender.shop_log.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.shop_log.File=/logs/shop_log.log
log4j.appender.shop_log.Threshold=INFO
log4j.appender.shop_log.layout=org.apache.log4j.PatternLayout
log4j.appender.shop_log.layout.ConversionPattern=%m%n
log4j.additivity.shop_log=false

配置中关键的配置说明是这一句:
log4j.appender.debug.Threshold = INFO 
而它的作用是输出INFO级别以上的内容到日志文件中,所以以上pt.log,shop_log.log,portal_log .log文件中都会包含了ERROR级别的文件。

这就比较烦,得到了我所不要想要的日志信息!!!!!

解决办法是:定义自己的Appender类,继承DailyRollingFileAppender,改写针对Threshold 的设置说明(重写针对级别的比较方法)

源代码:

  1. public boolean isAsSevereAsThreshold(Priority priority)  {
  2. return threshold == null || priority.isGreaterOrEqual(threshold);
  3. }

重写 isAsSevereAsThreshold(Priority priority)方法:

  1. public class MyAppender extends DailyRollingFileAppender {
  2. @Override
  3. public boolean isAsSevereAsThreshold(Priority priority) {
  4. //只判断是否相等,而不判断优先级
  5. return this.getThreshold().equals(priority);
  6. }
  7. }

这样,进行唯一判断,只有当Threshold与priority一致时,才进行输出,就实现了真正Log4j按照级别输出日志文件。

备份,仅供参考!!!

最新文章

  1. Javascript:JSON总结
  2. js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版【转】
  3. 【C#】VS2015开发环境的安装和配置(三)2016-08-03更新
  4. 移动web开发介绍——浏览器
  5. 01C语言基础知识
  6. iOS -类目,延展,协议
  7. CodeForces 527B Error Correct System
  8. Java Lock
  9. C++之友元函数
  10. Python3.X与urllib
  11. 华为手机root 删除一般不用软件 的命令
  12. Effective C++_笔记_条款09_绝不在构造和析构过程中调用virtual函数
  13. sphinx set several dates as filter
  14. javascript类的继承
  15. 做事从来不坚持的我又开始学习PyQt了。。。。。。
  16. codis3.2安装报错dashboard.go:369: [PANIC] call rpc create-proxy to dashboard 127.0.0.1:18080 failed的处理
  17. C语言学习及应用笔记之一:C运算符优先级及使用问题
  18. 【转】PropertyGrid控件中的多级显示
  19. ASP.NET Response.Redirect 丢失 Session的问题(作废,仅供参考)
  20. android模拟器修改时间

热门文章

  1. 文件权限:普通(r、w、x)和特殊(s、t)
  2. Excel2013 基本用法(下)
  3. mysql查询时强制区分大小写
  4. lua相关笔记
  5. JS多线程(web work)
  6. hbase 简单操作
  7. 禁止换行“white-space:nowrap;”!
  8. 【Java EE 学习 83 上】【SpringMVC】【基本使用方法】
  9. B/S系统常见缺陷整理和解决方案
  10. 没有了SA密码,无法Windows集成身份登录,DBA怎么办?