You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Log4j2配置未完全生效:控制台格式不符且日志文件为空

Log4j2配置问题修复方案

问题1:RollingFile日志文件为空

核心原因

你的Loggers节点里,Root仅关联了Console输出端,完全没把日志导向testController这个RollingFile Appender,自然不会生成有内容的日志文件。另外DefaultRolloverStrategy里的Delete标签,basePath拼写错误(写成了${basePathr}),会导致日志清理功能失效。

修复步骤

  1. 在Root节点下新增RollingFile的关联:
<Loggers>
    <Root level="info">
        <AppenderRef ref="Console" />
        <AppenderRef ref="testController" /> <!-- 新增这行,让日志输出到文件 -->
    </Root>
</Loggers>
  1. 修正Delete标签的路径拼写:
<Delete basePath="${basePath}" maxDepth="10">
    <IfLastModified age="365d" />
</Delete>

问题2:控制台日志格式与配置不一致

核心原因

  1. Console的Pattern格式存在冗余无效内容:末尾的HH:mm:ss.SSS%d{dd-MM-yyyy}0 | [%-1p]是多余的,会导致日志格式混乱;
  2. Log4j2版本与Spring Boot 2.7.1不兼容:你用的2.11.2版本过低,Spring Boot 2.7.x适配的是2.17.x系列,版本不匹配可能导致配置不生效;
  3. 依赖引入方式不规范:手动加log4j-api、log4j-core容易出现版本冲突,建议用Spring Boot官方的starter。

修复步骤

  1. 清理Console的冗余格式配置:
<Console name="Console" target="SYSTEM_OUT">
    <PatternLayout
            pattern="%d{dd-MM-yyyy HH:mm:ss.SSS} [%-5level] [%t] %c{1} - %msg%n" />
</Console>
  1. 替换POM里的Log4j2依赖,用Spring Boot官方starter:
<!-- 删除原手动引入的log4j-api、log4j-core、disruptor,替换成下面的依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

完整修复后的log4j2.xml

<?xml version="1.0" encoding="UTF-8" ?>
<Configuration status="trace">
    <Properties>
        <Property name="basePath">C:/temp/logs</Property>
    </Properties>

    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout
                    pattern="%d{dd-MM-yyyy HH:mm:ss.SSS} [%-5level] [%t] %c{1} - %msg%n" />
        </Console>

        <RollingFile name="testController"
                     fileName="${basePath}/testController.log"
                     filePattern="${basePath}/testController-%d{yyyy-MM-dd}.log">
            <PatternLayout>
                <pattern>%d{dd-MM-yyyy HH:mm:ss.SSS} [%-5level] [%t] %c{1} - %msg%n</pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true" />
                <SizeBasedTriggeringPolicy size="10MB" />
            </Policies>
            <DefaultRolloverStrategy max="10">
                <Delete basePath="${basePath}" maxDepth="10">
                    <IfLastModified age="365d" />
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console" />
            <AppenderRef ref="testController" />
        </Root>
    </Loggers>
</Configuration>

验证步骤

  1. 确认log4j2.xml在src/main/resources目录下(你的路径截图显示位置正确);
  2. 清理C:/temp/logs下的旧文件,避免缓存干扰;
  3. 启动应用,查看Log4j2的trace日志,确认配置文件加载无报错。

内容的提问来源于stack exchange,提问作者Victor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 02:06:23