我们知道:
log4j.logger.XX cover ==> log4j.rootLogger

log4j.appender.XX.Threshold决定了最低接收级别

也就是说rootLogger首先决定所有log的输出级别,而log4j.logger.XX是对XX路径下的jar包的输出级别的修改,直接覆盖rootLogger

但是对于不同的输出口,他们的接收级别是不同的。

举例1:
log4j.appender.XX.Threshold门槛高于log4j.logger.XX时,

log4j.logger.com.test=debug

log4j.appender.A.Threshold=INFO

log4j.appender.B.Threshold=WARN

那么就算设定com.test输出的级别是debug,但是A只接收INFO级别以上的log,而B只接收WARN级别以上的log

举例2:
log4j.appender.XX.Threshold门槛低于log4j.logger.XX时,

log4j.logger.com.test=info

log4j.appender.A.Threshold=DEBUG

log4j.appender.B.Threshold=WARN

那么com.test只输出info级别的,而A下设定的是debug,那么com.test输出的所有的日志在A下可以全部显示(当然是info以上的,因为com.test只给出了info以上的)。而在B下设定是warn,虽然com.test输出info级别以上的log给B,但是B只接收warn以上的log。

通过这样的方式配置,可以限定在不同的输出口过滤不同等级的日志。

应用举例需求:
我们不太想输出一些第三方jar的日志,但是error级别以上的我们需要,我们想输出我们自己的包下debug以上级别的日志,但是在控制台我想看到所有的,而在日志文件下,我却只想写入warn级别以上的日志。对于这样的情况如何配置呢?

这个时候我们就根据依据的来配置一下log4j
首先来点背景设定
我们自己的jar包都是com.test开头
A代表控制台输出
B代表文件输出
当然那些都只是一个命名

好,我们开始。首先所有的第三方jar都不太想看到输出日志,但是error的级别以上的需要
log4j.rootLogger=error, A,B
这句的意思就是设定所有log输出给A,B的等级为error

然后,我们想输出我们自己的包下debug以上级别的日志。
log4j.logger.com.test=debug
这句是设定com.test包下的所有log输出级别为debug,这里的设定直接覆盖了rootLogger对com.test包的作用。

最后,在控制台我想看到所有的,而在日志文件下,我却只想写入warn级别以上的日志。
log4j.appender.A=org.apache.log4j.ConsoleAppender
#config A position output contain DEBUG level and up
log4j.appender.A.Threshold=DEBUG
log4j.appender.A.layout=org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern=%d [%-5p] %l:%t - %m %n

#in the daily files
log4j.appender.B=org.apache.log4j.DailyRollingFileAppender
log4j.appender.B.Threshold=WARN
log4j.appender.B.File=${root.path}/log/MyProject.log
log4j.appender.B.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.B.layout=org.apache.log4j.PatternLayout
log4j.appender.B.layout.ConversionPattern=%d [%-5p] %l:%t - %m %n

和日志级别无关的代码就不解释了。直接重点,
log4j.appender.A.Threshold=DEBUG
log4j.appender.B.Threshold=WARN
表示A的接收级别为debug,而B的接收级别为warn。这样,A就可以看到debug以上的所有日志,而写入B的只有warn级别以上的日志。

 

log4j级别输出的更多相关文章

  1. Log4j按级别输出到不同文件

    log4j.properties 文件: log4j.logger.net.sf.hibernate.cache=debug log4j.rootLogger = error,portal_log,s ...

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

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

  3. log4j日志输出级别变更

    1.   现阶段log4j日志输出配置 示例:基础服务日志配置 #DEBUG < INFO < WARN < ERROR < FATAL\u65E5\u5FD7\u7684\u ...

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

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

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

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

  6. log4j日志输出使用教程

    Log4j是帮助开发人员进行日志输出管理的API类库.它最重要的特点就可以配置文件灵活的设置日志信息的优先级.日志信息的输出目的地以及日志信息的输出格式.Log4j除了可以记录程序运行日志信息外还有一 ...

  7. 热切换Log4j级别配置

    欢迎和大家交流技术相关问题:邮箱: jiangxinnju@163.com博客园地址: http://www.cnblogs.com/jiangxinnjuGitHub地址: https://gith ...

  8. log4j日志输出框架

    什么是log4j框架呢? log4j是一个日志输出框架,用于输出日志的.比如MyBatis的日志就是通过log4j输出的,主流框架都是log4j输出的,Spring框架 也可以通过log4j输出日志! ...

  9. log4j日志输出到日志文件中和控制台中 +log4j配置详解

    1.引入log4j的jar包 https://mvnrepository.com/,可以找到log4j的jar和依赖. 2.创建log4j.properties,并配置log4j #设置日志的级别 , ...

随机推荐

  1. java邮件客户端

    /*** *邮件VO **/package net.jk.util.email.vo; import java.util.Date; import java.util.List; import net ...

  2. Linux 网络配置(固定IP)

    通常linux作为服务器系统时,是不推荐安装图形界面的,因此我们需要掌握非图形界面下如何配置网络,主要两种方式,如下: 一.使用SETUP工具(redhat系列才可以,推荐此修改方式) 1.在命令行直 ...

  3. solr可用于集群的搜索 【转】

    一. SOLR搭建企业搜索平台 运行环境: 运行容器:Tomcat6.0.20 Solr版本:apache-solr-1.4.0 分词器:mmseg4j-1.6.2  词库:sogou-dic 准备工 ...

  4. MySQL 创建数据库

    MySQL 创建数据库 使用 mysqladmin 创建数据库 使用普通用户,你可能需要特定的权限来创建或者删除 MySQL 数据库. 所以我们这边使用root用户登录,root用户拥有最高权限,可以 ...

  5. iphone立体矢量图标_学习教程

  6. PHP Countable接口

    实现该接口可以使用count()方法来获取集合的总数

  7. 142 Linked List Cycle II(如果链表有环,找到入口结点Medium)

    题目意思:如果有环,返回入口结点 思路:先判断有没环,再计算环的结点数,然后p1指向头,p2往后移结点次数,p1.p2相遇为入口结点 ps:还是利用指针间距这个思路 /** * Definition ...

  8. javascript特殊运算符(in,instanceof,typeof,delete,void,逗号)

    in运算符                 in运算符要求其左边的运算数是一个字符串,或可以被转换为字符串,右边的运算数十一个对象或数组.如果该 运算符左边的值是右边对象的一个属性名,则返回true, ...

  9. 利用Warensoft Stock Service编写高频交易软件

    利用Warensoft Stock Service编写高频交易软件 无论是哪种交易软件,对于程序员来讲,最麻烦的就是去实现各种算法.本文以SAR算法的实现过程为例,为大家说明如何使用Warensoft ...

  10. ThinkPHP 使用极光推送给ios推送消息

    HTML <div id="wrap"><a href="<{:U('Push/pushData')}>">推送</a ...