log4j2.xml配置文件怎么写 log4j2日志级别配置

来源:网站建设作者:坚哥头衔:草根站长
导读:本期聚焦于小伙伴创作的《log4j2.xml配置文件怎么写 log4j2日志级别配置》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《log4j2.xml配置文件怎么写 log4j2日志级别配置》有用,将其分享出去将是对创作者最好的鼓励。

log4j2是Java生态中广泛使用的日志框架,通过log4j2.xml配置文件可以灵活控制日志的输出位置、格式以及日志级别,而日志级别配置是其中核心的部分,决定了哪些日志会被记录、哪些会被过滤。

log4j2.xml配置文件怎么写 log4j2日志级别配置

log4j2日志级别说明

log4j2内置了8个日志级别,按照优先级从低到高依次为:

  • ALL:最低级别,打开所有日志记录
  • TRACE:追踪级别,输出程序运行的详细轨迹信息
  • DEBUG:调试级别,输出调试相关的详细信息
  • INFO:信息级别,输出程序运行的关键信息
  • WARN:警告级别,输出潜在的问题提示
  • ERROR:错误级别,输出程序运行中的错误信息
  • FATAL:严重错误级别,输出导致程序退出的严重错误
  • OFF:最高级别,关闭所有日志记录

日志输出规则是:只会输出优先级大于等于当前配置级别的日志,比如配置级别为INFO,那么INFO、WARN、ERROR、FATAL级别的日志都会被输出,而TRACE和DEBUG级别的日志会被过滤。

log4j2.xml基础结构

一个标准的log4j2.xml配置文件主要包含Configuration根节点,根节点下通常包含AppendersLoggers两个核心子节点:

  • Appenders:定义日志的输出目的地,比如控制台、文件、滚动文件等
  • Loggers:定义日志记录器,配置不同包或类的日志级别,以及关联的Appender

完整的log4j2.xml配置示例

以下是一个包含控制台和滚动文件输出,且配置了不同日志级别的完整log4j2.xml示例:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <!-- 定义属性,方便后续复用 -->
    <Properties>
        <Property name="LOG_HOME">./logs</Property>
        <Property name="FILE_NAME">app</Property>
    </Properties>

    <Appenders>
        <!-- 控制台输出Appender -->
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>

        <!-- 滚动文件输出Appender -->
        <RollingFile name="RollingFile" fileName="${LOG_HOME}/${FILE_NAME}.log"
                     filePattern="${LOG_HOME}/${FILE_NAME}-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="100MB"/>
            </Policies>
            <DefaultRolloverStrategy max="30"/>
        </RollingFile>
    </Appenders>

    <Loggers>
        <!-- 第三方包日志级别配置,避免输出过多无用日志 -->
        <Logger name="org.springframework" level="WARN" additivity="false">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="RollingFile"/>
        </Logger>

        <!-- 自定义业务包日志级别配置 -->
        <Logger name="com.example.service" level="DEBUG" additivity="false">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="RollingFile"/>
        </Logger>

        <!-- 根日志记录器配置 -->
        <Root level="INFO">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
</Configuration>

配置说明与注意事项

1. Configuration的status属性

Configurationstatus属性用于设置log4j2框架自身的日志级别,这里设置为WARN,避免输出过多框架调试信息,不影响业务日志的配置。

2. Logger的additivity属性

additivity默认值为true,表示当前Logger的日志会传递给父Logger,设置为false可以避免日志重复输出,比如自定义Logger配置了additivity为false,日志只会输出到当前Logger关联的Appender,不会传递给Root Logger。

3. 日志级别的生效范围

Logger的level属性只对该Logger对应的包或类生效,比如上述配置中com.example.service包下的类日志级别为DEBUG,会输出DEBUG及以上级别的日志,而其他未单独配置的包会继承Root Logger的INFO级别。

Java代码中使用日志示例

配置完成后,在Java代码中可以通过以下方式使用log4j2输出不同级别的日志:

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class TestService {
    // 获取日志记录器,参数为当前类的Class对象
    private static final Logger logger = LogManager.getLogger(TestService.class);

    public void testLog() {
        logger.trace("这是trace级别的日志");
        logger.debug("这是debug级别的日志");
        logger.info("这是info级别的日志");
        logger.warn("这是warn级别的日志");
        logger.error("这是error级别的日志");
        logger.fatal("这是fatal级别的日志");
    }
}

如果TestService类在com.example.service包下,运行testLog方法时,会输出DEBUG、INFO、WARN、ERROR、FATAL级别的日志,而TRACE级别的日志会被过滤,符合我们之前的配置规则。

log4j2log4j2.xml日志级别log4j2配置修改时间:2026-06-25 09:09:35

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。