log4j2.xml 配置文件详解

log4j2.xml 配置文件详解一 log4j2 介绍 log4j2 x 版本不再支持像 1 x 中的 properties 后缀的文件配置方式 2 x 版本配置文件后缀名只能为 xml json 或者 jsn 配置文件的格式 log2j 配置文件可以是 xml 格式的 也可以是 json 格式的 配置文件的位置 log4j2 默认会在 classpath 目录下寻找 log4j2 xml log4j json log4j jsn 等

  一、log4j2介绍

  二、配置文件节点解析

配置参数解释
 %d{ 
   HH:mm:ss.SSS} 表示输出到毫秒的时间 %t 输出当前线程名称 %-5level 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0 %logger 输出logger名称,因为Root Logger没有名称,所以没有输出 %msg 日志文本 %n 换行 其他常用的占位符有: %F 输出所在的类文件名,如Log4j2Test.java %L 输出行号 %M 输出所在方法名 %l 输出语句所在的行数, 包括类名、方法名、文件名、行数 

   三、需要的Maven依赖

 <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.5</version> </dependency> 

   四、最简配置

<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> </Appenders> <Loggers> <Root level="error"> <AppenderRef ref="Console"/> </Root> </Loggers> </Configuration> 

   五、较全面的配置

<?xml version="1.0" encoding="UTF-8"?> <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --> <!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出--> <!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数--> <configuration status="WARN" monitorInterval="30"> <!--先定义所有的appender--> <appenders> <!--这个输出控制台的配置--> <console name="Console" target="SYSTEM_OUT"> <!--输出日志的格式--> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> </console> <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用--> <File name="log" fileName="log/test.log" append="false"> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/> </File> <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档--> <RollingFile name="RollingFileInfo" fileName="${sys:user.home}/logs/info.log" filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log"> <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--> <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="100 MB"/> </Policies> </RollingFile> <RollingFile name="RollingFileWarn" fileName="${sys:user.home}/logs/warn.log" filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log"> <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="100 MB"/> </Policies> <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 --> <DefaultRolloverStrategy max="20"/> </RollingFile> <RollingFile name="RollingFileError" fileName="${sys:user.home}/logs/error.log" filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log"> <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="100 MB"/> </Policies> </RollingFile> </appenders> <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效--> <loggers> <!--过滤掉spring和mybatis的一些无用的DEBUG信息--> <logger name="org.springframework" level="INFO"></logger> <logger name="org.mybatis" level="INFO"></logger> <root level="all"> <appender-ref ref="Console"/> <appender-ref ref="RollingFileInfo"/> <appender-ref ref="RollingFileWarn"/> <appender-ref ref="RollingFileError"/> </root> </loggers> </configuration> 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226347.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午11:06
下一篇 2026年3月16日 下午11:07


相关推荐

  • UART与USART区别

    UART与USART区别USART:通用同步和异步收发器UART:通用异步收发器当进行异步通信时,这两者是没有区别的。区别在于USART比UART多了同步通信功能。这个同步通信功能可以把USART当做SPI来用,比如用USART来驱动SPI设备。同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。 异步是指:发送方发出数据后,不等接收方发回响应,接着发送下

    2022年5月20日
    53
  • 程序设计原则之迪米特原则

    程序设计原则之迪米特原则一 什么是迪米特原则迪米特原则也叫最小知道原则 即对其他的类尽量保持最少知道 只关心自己的直接朋友类 而不关心其他的类 直接朋友类 出现在自己的域中 方法入参中 方法出参中的类叫直接朋友类 那些在方法中出现的局部类不叫直接朋友类 二 结合场景分析假设这么一个场景 一个培训机构的老板叫小组领导查看开设的课程数量 老板应该只和小组领导保持直接朋友 而不管课程 直接下发命令给组领导后

    2026年3月18日
    2
  • Linux常用命令面试题(linux面试题必会题目)

    Linux常用命令因为热爱,所以拼搏。–RuiDer常用指令ls  显示文件或目录-l列出文件详细信息l(list)-a列出当前目录下所有文件及目录,包括隐藏的a(all)mkdir创建目录-p创建目录,若…

    2022年4月12日
    50
  • linux usb urb,linux usb urb详解

    linux usb urb,linux usb urb详解linuxusburb 详解谨以此文纪念过往的岁月一 前言在前文中看过了 hub 的驱动以及 host 的驱动还有 usb 设备的驱动 在把这些东西关联起来的东东中 一个很重要的 urb usbrequestbl 在本文中会详细来看 urb 的实现 以及具体的应用 二 Urburb 是什么东西 那先来看 urb 的定义吧 1structurb2 3 私有的 只能由 usb 核心和主机控制器访问的字段 4str

    2026年3月18日
    2
  • 你知道Python是什么意思吗?

    你知道Python是什么意思吗?python中文就是蟒蛇的意思。在计算机中,它是一种编程语言。Python(英语发音:/ˈpaɪθən/),是一种面向对象、解释型计算机程序设计语言,由GuidovanRossum于1989年

    2022年7月3日
    29
  • 教科书般!文心一言文生图,小白必看的神级教程,零基础也能轻松上手!🔥

    教科书般!文心一言文生图,小白必看的神级教程,零基础也能轻松上手!🔥

    2026年3月12日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号