浅谈log4j的rootLogger及其他坑爹的地方

 更新时间:2021年12月27日 10:34:33   作者:brad2309  
这篇文章主要介绍了log4j的rootLogger及其他坑爹的地方,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

log4j的rootLogger及其他坑爹地方

这里用的是org.apache.log4j.Logger

log4j.rootLogger=error, stdout 
log4j.appender.appenderName=org.apache.log4j.AsyncAppender 
 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
#only time no date.outfile1 has date
 
log4j.logger.com.ht=info,outfile1 
log4j.appender.outfile1=org.apache.log4j.RollingFileAppender
log4j.appender.outfile1.File=log/ht.log
log4j.appender.outfile1.MaxFileSize=100MB
log4j.appender.outfile1.MaxBackupIndex=50
log4j.appender.outfile1.layout=org.apache.log4j.PatternLayout
log4j.appender.outfile1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
 
log4j.logger.com.ht.log=info,outfile2 
log4j.appender.outfile2=org.apache.log4j.RollingFileAppender
log4j.appender.outfile2.File=log/ht2.log
log4j.appender.outfile2.MaxFileSize=100MB
log4j.appender.outfile2.MaxBackupIndex=50
log4j.appender.outfile2.layout=org.apache.log4j.PatternLayout
log4j.appender.outfile2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n

然后有两个类,Test1在com.ht包下面,Test2在com.ht.log包下面。每个下面打印一句:logger.info();

经过试验发现!!!!

Test1将输出到控制台和ht.log

Test2将输出到控制台和ht.log和ht2.log

注意这里rootLogger的级别可是error,可见这里的级别不起作用。

对于申明appender的包rootLogger的级别设置不起作用

其实,这里的error只对于没有申明appender的包才起作用。如果去掉log4j.logger.com.ht.log这一句,Test1没有任何输出,除非logger.error才会输出到控制台。

第二点:凡是申明appender的包,不论申明级别一定会包含rootLogger的输出,如果同时指定了outfile,那么日志会出现两份。

第三点:com.ht.log这个包下面的类可以匹配到所有上级目录的设置。

日志怎么设置要想清楚啊!不然这一句打到控制台那句打到文件,出问题了查出来的日志不连贯,好几个文件查来查去。

log4j.additivity.com.ht=false 可以不写入rootLogger。默认是true

log4j rootLogger配置

log4j.rootLogger=INFO,db语法为

log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
  • level:是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。

Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。

通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。

比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。

appenderName:就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。

例如:

log4j.rootLogger=info,A1,B2,C3 配置了3个输出地方,这个名字可以任意(如上面的db),但必须与我们在后面进行的设置名字对应;

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java封装类型与基础类型对比示例分析

    java封装类型与基础类型对比示例分析

    这篇文章主要为大家介绍了java封装类型与基础类型对比示例分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Java 通过反射变更String的值过程详解

    Java 通过反射变更String的值过程详解

    这篇文章主要介绍了Java 通过反射变更String的值过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Java 实现常见的非对称加密算法

    Java 实现常见的非对称加密算法

    这篇文章主要介绍了Java 实现常见的非对称加密算法,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2020-11-11
  • idea安装插件找不到的问题及解决

    idea安装插件找不到的问题及解决

    这篇文章主要介绍了idea安装插件找不到的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Spring动态注册多数据源的实现方法

    Spring动态注册多数据源的实现方法

    这篇文章主要介绍了Spring动态注册多数据源的实现方法,小编觉的挺不错的,现分享到脚本之家平台,需要的朋友可以参考下
    2018-01-01
  • MyBatis中的模糊查询语句

    MyBatis中的模糊查询语句

    这篇文章主要介绍了MyBatis中的模糊查询语句的相关资料,需要的朋友可以参考下
    2017-03-03
  • POS机如何与Java交互的方式探讨

    POS机如何与Java交互的方式探讨

    本文深入探讨POS机与Java语言的交互机制,详细介绍了通过RESTfulAPI、Socket编程和消息队列等方式实现数据交换和功能调用,文章还包含了代码示例、状态图与关系图,帮助开发者理解和实现POS机与Java之间的高效交互
    2024-09-09
  • JAVA WEB中Servlet和Servlet容器的区别

    JAVA WEB中Servlet和Servlet容器的区别

    这篇文章主要介绍了JAVA WEB中Servlet和Servlet容器的区别,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下
    2020-06-06
  • Java查看和修改线程优先级操作详解

    Java查看和修改线程优先级操作详解

    JAVA中每个线程都有优化级属性,默认情况下,新建的线程和创建该线程的线程优先级是一样的。本文将为大家详解Java查看和修改线程优先级操作的方法,需要的可以参考一下
    2022-08-08
  • SpringBoot中使用 POI的示例代码

    SpringBoot中使用 POI的示例代码

    这篇文章主要介绍了SpringBoot中使用POI的实例详解,包括引入poi的jar包和创建excel的实例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08

最新评论