log4j2配置文件xml详细了解

详细参考:https://www.cnblogs.com/new-life/p/9246143.html

 log4j 2.x版本不再支持像1.x中的.properties后缀的文件配置方式,2.x版本配置文件后缀名只能为".xml",".json"或者".jsn".

系统选择配置文件的优先级(从先到后)如下:

      (1).classpath下的名为log4j2-test.json 或者log4j2-test.jsn的文件.

      (2).classpath下的名为log4j2-test.xml的文件.

      (3).classpath下名为log4j2.json 或者log4j2.jsn的文件.

      (4).classpath下名为log4j2.xml的文件.

我们一般默认使用log4j2.xml进行命名。如果本地要测试,可以把log4j2-test.xml放到classpath,而正式环境使用log4j2.xml,则在打包部署的时候不要打包log4j2-test.xml即可。

缺省默认配置文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Configuration status="WARN"> //根节点有两个属性,status:指定日志打印级别,monitorinterval用于指定log4j自动重新配置的监测间隔时间,单位是s,最小是5s.
  3. <Appenders>(有三种子节点,Console,RollingFile,File)
  4. //表示输出到控制台的appender,name为appender的名字,target为SYSTEM_OUT或SYSTEM_ERR,一般只设置默认SYSTEM_OUT
  5. <Console name="Console" target="SYSTEM_OUT">
  6. //设置日志输出格式
  7. <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
  8. </Console>
  9.  File节点用来定义输出到指定位置的文件的Appender.
  10.         name:指定Appender的名字.
  11.         fileName:指定输出日志的目的文件带全路径的文件名.
  12.         PatternLayout:输出格式,不设置默认为:%m%n.
  13.  RollingFile节点用来定义超过指定大小自动删除旧的创建新的的Appender.
  14.         name:指定Appender的名字.
  15.         fileName:指定输出日志的目的文件带全路径的文件名.
  16.         PatternLayout:输出格式,不设置默认为:%m%n.
  17.         filePattern:指定新建日志文件的名称格式.
  18.         Policies:指定滚动日志的策略,就是什么时候进行新建日志文件输出日志.
  19.         TimeBasedTriggeringPolicy:Policies子节点,基于时间的滚动策略,interval属性用来指定多久滚动一次,默认是1 hour。modulate=true用来调整时间:比如现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am...而不是7am.
  20.         SizeBasedTriggeringPolicy:Policies子节点,基于指定文件大小的滚动策略,size属性用来定义每个日志文件的大小.
  21.         DefaultRolloverStrategy:用来指定同一个文件夹下最多有几个日志文件时开始删除最旧的,创建新的(通过max属性)。
  22. </Appenders>
  23. ----------------------------------------------
  24. <Loggers>
  25. (3).Loggers节点,常见的有两种:Root和Logger.
  26.        Root节点用来指定项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root日志输出
  27.          level:日志输出级别,共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.
  28.          AppenderRef:Root的子节点,用来指定该日志输出到哪个Appender.
  29.        Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。
  30.          level:日志输出级别,共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.
  31.          name:用来指定该Logger所适用的类或者类所在的包全路径,继承自Root节点.
  32.          AppenderRef:Logger的子节点,用来指定该日志输出到哪个Appender,如果没有指定,就会默认继承自Root.如果指定了,那么会在指定的这个Appender和Root的Appender中都会输出,此时我们可以设置Logger的additivity="false"只在自定义的Appender中进行输出。
  33. <Root level="error">
  34. <AppenderRef ref="Console"/>
  35. </Root>
  36. </Loggers>
  37. </Configuration>
  38.     (4).关于日志level.
  39.       共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.
  40.       All:最低等级的,用于打开所有日志记录.
  41.       Trace:是追踪,就是程序推进以下,你就可以写个trace输出,所以trace应该会特别多,不过没关系,我们可以设置最低日志级别不让他输出.
  42.       Debug:指出细粒度信息事件对调试应用程序是非常有帮助的.
  43.       Info:消息在粗粒度级别上突出强调应用程序的运行过程.
  44.       Warn:输出警告及warn以下级别的日志.
  45.       Error:输出错误信息日志.
  46.       Fatal:输出每个严重的错误事件将会导致应用程序的退出的日志.
  47.       OFF:最高等级的,用于关闭所有日志记录.
  48.       程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
  3. <!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
  4. <!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
  5. <configuration status="WARN" monitorInterval="30">
  6. <!--先定义所有的appender-->
  7. <appenders>
  8. <!--这个输出控制台的配置-->
  9. <console name="Console" target="SYSTEM_OUT">
  10. <!--输出日志的格式-->
  11. <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
  12. </console>
  13. <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用-->
  14. <File name="log" fileName="log/test.log" append="false">
  15. <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
  16. </File>
  17. <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
  18. <RollingFile name="RollingFileInfo" fileName="${sys:user.home}/logs/info.log"
  19. filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
  20. <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
  21. <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
  22. <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
  23. <Policies>
  24. <TimeBasedTriggeringPolicy/>
  25. <SizeBasedTriggeringPolicy size="100 MB"/>
  26. </Policies>
  27. </RollingFile>
  28. <RollingFile name="RollingFileWarn" fileName="${sys:user.home}/logs/warn.log"
  29. filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
  30. <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
  31. <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
  32. <Policies>
  33. <TimeBasedTriggeringPolicy/>
  34. <SizeBasedTriggeringPolicy size="100 MB"/>
  35. </Policies>
  36. <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件这里设置了20-->
  37. <DefaultRolloverStrategy max="20"/>
  38. </RollingFile>
  39. <RollingFile name="RollingFileError" fileName="${sys:user.home}/logs/error.log"
  40. filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
  41. <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
  42. <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
  43. <Policies>
  44. <TimeBasedTriggeringPolicy/>
  45. <SizeBasedTriggeringPolicy size="100 MB"/>
  46. </Policies>
  47. </RollingFile>
  48. </appenders>
  49. <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
  50. <loggers>
  51. <!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
  52. <logger name="org.springframework" level="INFO"></logger>
  53. <logger name="org.mybatis" level="INFO"></logger>
  54. <root level="all">
  55. <appender-ref ref="Console"/>
  56. <appender-ref ref="RollingFileInfo"/>
  57. <appender-ref ref="RollingFileWarn"/>
  58. <appender-ref ref="RollingFileError"/>
  59. </root>
  60. </loggers>
  61. </configuration>

log4j2配置文件xml详细了解的更多相关文章

  1. 聊一聊log4j2配置文件log4j2.xml

    一.背景 最近由于项目的需要,我们把log4j 1.x的版本全部迁移成log4j 2.x 的版本,那随之而来的slf4j整合log4j的配置(使用Slf4j集成Log4j2构建项目日志系统的完美解决方 ...

  2. log4j2配置文件log4j2.xml

    原地址:https://www.cnblogs.com/hafiz/p/6170702.html 1.关于配置文件的名称以及在项目中的存放位置 log4j 2.x版本不再支持像1.x中的.proper ...

  3. log4j2配置文件log4j2.xml详解(转载)

    此博文转载自阿豪聊干货:https://www.cnblogs.com/hafiz/p/6170702.html 一.背景 最近由于项目的需要,我们把log4j 1.x的版本全部迁移成log4j 2. ...

  4. log4j2配置文件log4j2.xml详解

    配置全解 1.缺省默认配置文件 <?xml version="1.0" encoding="UTF-8"?> <Configuration s ...

  5. log4j2配置文件解读

    log4j2可以按照开发人员预先的设定,在指定的位置和情况下打印log语句,并且可以酌情关闭某些log语句,如开发阶段debug类型的语句等.并且,可以使用layout来定义输出语句的格式. 使用前需 ...

  6. Log4j2配置文件详解

    目录[-] 1 系列目录 2 默认配置 3 第一个配置例子 4 复杂一点的配置 4.1 Appender之Syslog配置 4.2 Syslog及Syslog-ng相关配置(Fedora) 5 Log ...

  7. Log4J2 配置文件模板及代码说明

    Log4j是Apache的著名项目,随着Java应用的越来越广泛,对日志性能等方面的要求也越来越高.Log4j的升级版本Log4j2在前些年发布.Log4J2的优点和好处有很多,可以自行搜索查阅相关文 ...

  8. Mybatis系列全解(四):全网最全!Mybatis配置文件XML全貌详解

    封面:洛小汐 作者:潘潘 做大事和做小事的难度是一样的.两者都会消耗你的时间和精力,所以如果决心做事,就要做大事,要确保你的梦想值得追求,未来的收获可以配得上你的努力. 前言 上一篇文章 <My ...

  9. web.xml 详细介绍(转)

    web.xml 详细介绍 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧 ...

随机推荐

  1. 【免费电子书】这可能是全网最齐的程序员编程电子书PDF合集了!

    [toc] 最近博主

  2. laravel中跟据某个特定顺序去排序查出来的数据:FIND_IN_SET

    //返回有顺序的客户id $customer_ids = $customer->bespeakTime($uid); $res = Customer::with('customer_indust ...

  3. Java-synchronized 中锁的状态及其转换

    synchronized 锁的优化过程:无锁 -> 偏向锁 -> 轻量级锁 -> 重量级锁 一.不同锁对象的状态表示(需要了解 Java 对象头) https://wiki.open ...

  4. docker-compose快速部署环境笔记

    # 在含有 docker-compose.yml 的文件夹下 构建容器# 如有使用 Dockerfile 在修改 Dockerfile 文件之后再次执行如下即可应用修改docker-compose u ...

  5. 解决JxBrowser中BrowserView控件覆盖其他控件的办法

    https://blog.csdn.net/w815878564/article/details/79699559 JxBrowser是一个基于chromium的Java浏览器组件,同时支持Swing ...

  6. LC 465. Optimal Account Balancing 【lock,hard】

    A group of friends went on holiday and sometimes lent each other money. For example, Alice paid for ...

  7. nginx的root 指令

    好长时间都没搞清nginx的root路径: location /img/ { alias /var/www/image/; } #若按照上述配置的话,则访问/img/目录里面的文件时,ningx会自动 ...

  8. java线程锁之synchronized

    声明:该博客参考https://www.cnblogs.com/kaituorensheng/p/10079916.html,感谢哥们. 1.Sync.java package com.cn.comm ...

  9. Field in required a single bean, but 2 were found:

    我在其他类注入的时候出现以下错误 @Autowired NodeAgentService nodeAgentService; 异常 Description: Field mibService in c ...

  10. MySQL数据库5.7全文索引的坑

    1.引擎必须是MyIsAm 2.创建全文索引:ALTER TABLE articles ADD FULLTEXT (title,body); 3.注意全文搜索的字段必须等于或者大于4个字节才会有效 4 ...