配置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
相关产品推荐
相关产品推荐

