导读:本期聚焦于小伙伴创作的《怎么在Log4j2.xml中配置日志输出_Log4j2.xml日志级别与输出目的地配置》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《怎么在Log4j2.xml中配置日志输出_Log4j2.xml日志级别与输出目的地配置》有用,将其分享出去将是对创作者最好的鼓励。

Log4j2是Java生态中常用的日志框架,通过Log4j2.xml配置文件可以灵活控制日志的输出规则,包括日志级别过滤、输出目的地选择、输出格式定义等,满足不同场景下的日志管理需求。

怎么在Log4j2.xml中配置日志输出_Log4j2.xml日志级别与输出目的地配置

Log4j2.xml的基础结构

一个标准的Log4j2.xml配置文件主要包含<Configuration>根节点,根节点下分为<Properties><Appenders><Loggers>三个核心部分,各部分分工明确,共同实现日志的配置逻辑。

  • <Properties>:定义全局配置属性,比如日志文件路径、日志格式模板等,方便后续节点复用
  • <Appenders>:定义日志的输出目的地,比如控制台、本地文件、滚动文件等
  • <Loggers>:定义日志记录器,关联对应的Appender,同时设置日志级别过滤规则

日志级别说明与优先级

Log4j2内置了8个日志级别,按照优先级从低到高排序如下,配置日志级别后,只会输出优先级大于等于该级别的日志:

日志级别说明
ALL最低级别,输出所有日志
TRACE追踪级别,记录程序运行的详细轨迹
DEBUG调试级别,记录调试相关的信息
INFO信息级别,记录程序正常运行的关键信息
WARN警告级别,记录潜在的问题但不影响程序运行
ERROR错误级别,记录程序运行出现的错误
FATAL严重错误级别,记录导致程序退出的严重问题
OFF最高级别,关闭所有日志输出

日常开发中常用的级别是DEBUG、INFO、WARN、ERROR四个,生产环境一般配置为INFO或WARN级别,减少不必要的日志输出。

输出目的地Appender配置

控制台输出Appender

控制台Appender用于将日志输出到标准输出流,适合开发阶段调试使用,配置示例如下:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <!-- 控制台输出配置 -->
        <Console name="Console" target="SYSTEM_OUT">
            <!-- 日志输出格式 -->
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

文件输出Appender

文件Appender用于将日志输出到指定文件,适合需要持久化日志的场景,配置示例如下:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Properties>
        <!-- 定义日志文件路径属性 -->
        <Property name="logPath">./logs</Property>
        <Property name="fileName">app.log</Property>
    </Properties>
    <Appenders>
        <!-- 文件输出配置 -->
        <File name="File" fileName="${logPath}/${fileName}" append="true">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
        </File>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="File"/>
        </Root>
    </Loggers>
</Configuration>

其中append="true"表示日志追加到文件末尾,设置为false则每次启动程序会覆盖原有日志文件。

滚动文件Appender

滚动文件Appender可以自动按时间或文件大小切割日志文件,避免单个日志文件过大,是生产环境常用的配置,示例如下:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Properties>
        <Property name="logPath">./logs</Property>
    </Properties>
    <Appenders>
        <!-- 滚动文件输出配置 -->
        <RollingFile name="RollingFile" fileName="${logPath}/app.log"
                     filePattern="${logPath}/app-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
            <Policies>
                <!-- 按天切割日志 -->
                <TimeBasedTriggeringPolicy interval="1"/>
                <!-- 单个文件超过10MB切割 -->
                <SizeBasedTriggeringPolicy size="10MB"/>
            </Policies>
            <!-- 最多保留30个日志文件 -->
            <DefaultRolloverStrategy max="30"/>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
</Configuration>

自定义Logger配置

除了根Logger<Root>,还可以配置自定义Logger,针对不同的包或类设置不同的日志级别和输出规则,示例如下:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
        <RollingFile name="RollingFile" fileName="./logs/app.log"
                     filePattern="./logs/app-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"/>
                <SizeBasedTriggeringPolicy size="10MB"/>
            </Policies>
            <DefaultRolloverStrategy max="30"/>
        </RollingFile>
    </Appenders>
    <Loggers>
        <!-- 自定义Logger,针对com.example.service包设置DEBUG级别,输出到控制台 -->
        <Logger name="com.example.service" level="debug" additivity="false">
            <AppenderRef ref="Console"/>
        </Logger>
        <!-- 根Logger,默认INFO级别,输出到滚动文件 -->
        <Root level="info">
            <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
</Configuration>

其中additivity="false"表示该Logger的日志不会传递给父Logger,避免重复输出。

完整配置示例

以下是一个同时包含控制台、滚动文件输出,且配置了自定义Logger的完整Log4j2.xml示例:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Properties>
        <Property name="logPath">./logs</Property>
        <Property name="pattern">%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n</Property>
    </Properties>
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="${pattern}"/>
        </Console>
        <RollingFile name="RollingFile" fileName="${logPath}/app.log"
                     filePattern="${logPath}/app-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout pattern="${pattern}"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"/>
                <SizeBasedTriggeringPolicy size="10MB"/>
            </Policies>
            <DefaultRolloverStrategy max="30"/>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Logger name="com.example" level="debug" additivity="false">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="RollingFile"/>
        </Logger>
        <Root level="info">
            <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
</Configuration>

配置完成后,将文件放在项目的resources目录下,Log4j2框架会自动加载该配置,按照设定的规则输出日志。

Log4j2Log4j2.xml日志级别日志输出Appender修改时间:2026-06-30 05:54:44

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