[转载]log4j输出日志级别控制

我们知道:
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级别以上的日志。

转自:http://blog.csdn.net/zmx729618/article/details/51260803

时间: 2024-10-08 16:49:09

[转载]log4j输出日志级别控制的相关文章

Log4j的日志级别分析(转)

说明:Log4j的日志是有级别的,从低到高顺序为:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF,当定义了日志级别为WARN后,那么其比它高的级别(ERROR < FATAL)会打印出来. 基本使用方法: Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式.日志信息的优先级从高到低有ERROR.WARN.INFO.DEBUG,分别用来指定这条日志信息的重要程度:日志信息的输出目

log4j.properties日志级别debug打印后台sql语句

通常,日志的打印级别对开发的辅助性非常重要,合适的日志级别能够快速定位开发问题. 很多时候,开发时我们需要检查后台sql语句,可通过配置log4j配置文件来完成. 当INFO级别时,与数据库交互时是不会打印sql语句的,配置如下: 为了更清晰的看到sql的输出,我们现在把日志级别改为DEBUG,如下: 这样在与数据库交互时,控制台就会将sql打印出来,便于定位问题:同时也可以很明显的看出INFO与DEBUG的日志输出区别,DEBUG输出的日志较多,且在项目启动的时候也较慢. 原文地址:https

log4j动态日志级别调整

1. 针对root logger的设置 log4j.rootLogger=INFO, CONSOLELogger.getRootLogger().setLevel(org.apache.log4j.Level.DEBUG) 2. 针对Appender的Appender设置 log4j.appender.CONSOLE.Threshold=DEBUG((org.apache.log4j.ConsoleAppender)Logger.getRootLogger().getAppender("CONS

log4j输出日志乱码(转)

log4j日志文件乱码问题的解决方法 log4j日志文件中文乱码处理方法 log4j 控制台和文件输出乱码问题解决 写在前面,第三篇文章中将原因解释的最清楚,为什么设置为UTF-8或者GBK就生效了,原因是类文件的编码和输入日志的编码必须一致,否则就会出现乱码. 转:log4j日志文件乱码问题的解决方法 近日在AIX上用log4j打印日志,出现乱码,经过努力解决问题. 症状:在默认语言非中文(或者说默认语言不支持中文的)的Windows.Linux.Unix上,用log4j打印日志,出现乱码,常

使用Apache pdfbox: 从Linux安装字体到log4j设置日志级别

在使用Apache的pdfbox的过程中,因为Linux环境下没有STSong-Light字体而报警告信息 (PDCIDFontType0.java:147) - Using fallback UKaiCN for CID-keyed font STSong-Light 搜索得知此为Adobe推出的一种OpenType字体,在adobe的安装目录下找到了疑似的字体AdobeSongStd-Light.otf,将此文件copy至Linux的/usr/share/fonts目录中,因为pdfbox会

LOG4J中日志级别的使用

<logger name="demo-log" additivity="false"> <level value="${log.level}" /> <appender-ref ref="LOG-FILE" /> </logger> LOG4J中分为OFF.FATAL.ERROR.WARN.INFO.DEBUG.TRACE.ALL或者您定义的级别.Log4j建议仅仅使用四个级别.

log4j输出日志到文件

输出端Appender Appender用来指定日志信息输出到哪个地方,可以同时指定多个输出目的地.Log4j允许将信息输出到许多不同的输出设备中,一个log信息输出目的地就叫做一个Appender.每个Logger都可以拥有一个或多个Appender,每个Appender表示一个日志的输出目的地.可以使用Logger.addAppender(Appender app)为Logger增加一个Appender,也可以使用Logger.removeAppender(Appender app)为Log

MyBatis3-配置使用log4j输出日志

这篇文章的思路源自http://www.cnblogs.com/EasonJim/p/7050312.html这个错误的解决,还是使用上一章http://www.cnblogs.com/EasonJim/p/7065330.html的例子代码,使用的是log4j1.x版本,目的是方便配置,当然,在MyBatis3.4.4版本加入了配置组件的选择,所以可以指定特定的组件,具体配置如下: 说明:继上一篇错误解决的方法中引入日志的方法只是实现了在Application项目中的BUG解决,但是如果在We

log4j输出日志到不同文件

1.先看log4j的配置文件:log4j.rootLogger=INFO,R,Clientlog4j.appender.R=org.apache.log4j.RollingFileAppenderlog4j.appender.R.File=./log/server.loglog4j.appender.R.MaxFileSize=5MBlog4j.appender.R.MaxBackupIndex=10log4j.appender.R.layout=org.apache.log4j.Pattern