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

配置Logback输出JSON日志后testlog.log日志文件未生成问题求助

问题排查与解决方案

核心原因

  • 你的自定义logback.xml仅配置了控制台输出的ConsoleAppender,未配置文件输出的Appender,也没有将文件输出的Appender绑定到root日志节点,因此日志只会输出到控制台,不会写入本地文件。
  • 当项目中存在自定义logback.xml时,Spring Boot的自动日志配置会失效,你在application.properties中配置的logging.file.path、logging.file.name参数不会被自动加载到logback配置中,需要在logback配置中主动读取。

修复步骤

1. 重命名logback配置文件(可选但推荐)

将logback.xml重命名为logback-spring.xml,这是Spring Boot官方推荐的命名格式,支持直接读取application.properties中的配置属性,避免路径硬编码。

2. 修改logback配置,新增文件输出Appender

以下是完整的配置示例:

<configuration>
    <!-- 读取application.properties中的日志文件路径配置 -->
    <springProperty scope="context" name="LOG_FILE_PATH" source="logging.file.name" defaultValue="./install/my-project/logs/testlog.log"/>

    <!-- 控制台输出Appender -->
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="ch.qos.logback.contrib.json.classic.JsonLayout">
                <timestampFormat>yyyy-MM-dd'T'HH:mm:ss.SSSX</timestampFormat>
                <timestampFormatTimezoneId>Etc/UTC</timestampFormatTimezoneId>
                <jsonFormatter class="ch.qos.logback.contrib.jackson.JacksonJsonFormatter">
                    <prettyPrint>true</prettyPrint>
                </jsonFormatter>
            </layout>
        </encoder>
    </appender>

    <!-- 新增文件输出Appender,同样使用JSON格式输出 -->
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_FILE_PATH}</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 历史日志归档格式 -->
            <fileNamePattern>${LOG_FILE_PATH}.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
            <!-- 单个日志文件最大100M -->
            <maxFileSize>100MB</maxFileSize>
            <!-- 历史日志保留30天 -->
            <maxHistory>30</maxHistory>
            <!-- 所有日志文件总大小不超过10G -->
            <totalSizeCap>10GB</totalSizeCap>
        </rollingPolicy>
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="ch.qos.logback.contrib.json.classic.JsonLayout">
                <timestampFormat>yyyy-MM-dd'T'HH:mm:ss.SSSX</timestampFormat>
                <timestampFormatTimezoneId>Etc/UTC</timestampFormatTimezoneId>
                <jsonFormatter class="ch.qos.logback.contrib.jackson.JacksonJsonFormatter">
                    <!-- 文件输出可以关闭prettyPrint节省存储空间 -->
                    <prettyPrint>false</prettyPrint>
                </jsonFormatter>
            </layout>
        </encoder>
    </appender>

    <root level="debug">
        <appender-ref ref="stdout"/>
        <!-- 绑定文件输出Appender -->
        <appender-ref ref="file"/>
    </root>
</configuration>

3. 额外注意事项

  • 确认应用运行的用户对你配置的./install/my-project/logs目录有读写权限,否则会出现日志文件创建失败的问题。
  • 如果你使用的Spring Boot版本较高,不需要额外手动引入logback相关依赖,Spring Boot默认已经集成了logback,手动指定版本可能会出现依赖冲突,如果启动时报错可以移除pom.xml中手动引入的logback-classic和slf4j-api依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:15:03