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按照级别输出日志文件。

备份,仅供参考!!!

Log4j按级别输出到不同文件的更多相关文章

  1. Log4j按级别输出日志到不同文件配置分析 (转:projava)

    关于LOG4J 按照级别输出日志,并按照级别输出到不同文件中的说法有很多, 网上贴的最多的log4j.properties的设置是这样的 log4j.rootLogger=info,stdout,in ...

  2. Log4j按级别输出日志到不同文件配置

    1.自定义LogFileAppender类,继承DailyRollingFileAppender,实现Log4j按级别输出日志到不同文件. package com.liying.mango.commo ...

  3. Log4j按级别输出日志到不同文件配置分析

    关于LOG4J 按照级别输出日志,并按照级别输出到不同文件中的说法有很多, 网上贴的最多的log4j.properties的设置是这样的 log4j.rootLogger=info,stdout,in ...

  4. log4j2按日志级别输出到指定文件

    在项目中,可能会产生非常多的日志记录,为了方便日志分析,一般可以将日志按级别输出到指定文件,本次就先说说log4j2的实现吧: 1.先加入log4j2依赖包 2.写一个java类进行测试,类文件中仅仅 ...

  5. log4j按级别输出日志文件

    log4j.properties: BASE_DIR= /home/admin/preprocess-tmc-city/logs log4j.rootLogger=debug,stdout,debug ...

  6. log4net按照不同的【LEVEL】级别输出到不同文件

    Log4net按照不同级别写入多个日志文件 2012-02-08 15:06 by Fred-Xu, ... 阅读, ... 评论, 收藏, 编辑 在一个Web应用项目中,我使用了Fluent NHi ...

  7. log4net按照不同的级别输出到不同文件

      配置目标: 1)一个文件记录全部级别的日志: 2)记录某一级别的日志(使用LevelRangeFilter进行级别的过滤).   Eg: <log4net>   <appende ...

  8. log4j配置文件及java调用 每个级别输出到不同的文件

    #配置根Logger log4j.rootLogger = DEBUG , RollingFile,CONSOLE #文件大小达到一定尺寸的时候创建一个新的文件 log4j.appender.Roll ...

  9. log4j.xml配置,包含自定义log4j日志级别及输出日志到不同文件

      一.配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configura ...

随机推荐

  1. zepto返回顶部动画

    点击返回顶部 function goTop(acceleration, time) { acceleration = acceleration || 0.1; time = time || 16; v ...

  2. Docker - 技术栈

    与传统的方式类似,构建及运行Docker容器与在一台虚拟机上构建和运行程序的方式是相似的,只是使用了一套新的工具以及技术. 与虚拟机不同的是,Docker容器将宿主机与应用程序或者服务隔离,从而提高了 ...

  3. 小米4 miui专用 Xposed安装器86版

    转载自 http://www.52pojie.cn/thread-516435-1-1.html 写在前面:各位用xp受到不同限制,有些机型还找不到框架包,又要刷第三方rec又要谨慎选择框架版本.官方 ...

  4. 利用html5、websocket和opencv实现人脸检测 (二)

    前一篇的代码在执行时,java.exe占用内存会快速上涨: 在4G内存电脑上,单个连接,会持续上涨到2G多,然后减到1G多,如此循环. 经过一些删减定位,可以确定问题由public byte[] pr ...

  5. iOS系统验证关闭

    在浏览器上查看iOS系统与否方法:1.打开浏览器2.在地址栏中输入 ipsw.me3.在打开的网页中选择 Select a device 选择你要查看的设备型号:4.选择好设备之后点击select i ...

  6. C++根据图片url下载图片

    需要使用到URLDownloadToFile()函数,该函数在头文件<urlmon.h>中声明. URLDownloadToFile()函数的定义如下: HRESULT URLDownlo ...

  7. MFC 创建XML

    void CreateXml() { CoInitialize(NULL); // 创建文档 MSXML2::IXMLDOMDocument2Ptr pXMLDoc = NULL; //创建DOMDo ...

  8. TFS API:三、TFS WorkItem添加和修改、保存

    TFS API:三.TFS  WorkItem添加和修改.保存 WorkItemStore:表示跟踪与运行 Team Foundation Server的服务器的工作项客户端连接. A.添加工作项 1 ...

  9. WPF之Binding初探

    初学wpf,经常被Binding搞晕,以下记录写Binding的基础. 首先,盗用张图.这图形象的说明了Binding的机理. 对于Binding,意思是数据绑定,基本用法是: 1.在xmal中使用 ...

  10. Android开发之MVP模式的使用

    前几天发现,在Android项目代码里有一个Activity类行数居然有1000多行,而600行左右都是逻辑控制,真正和页面控件处理相关的代码不多,虽然可以用#region <>...#e ...