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

Spring Boot 1.5.10.RELEASE打包Uber Jar后日志文件未生成求助

解决Spring Boot 1.5.10.RELEASE Uber Jar运行时日志文件不生成的问题

我之前也碰到过一模一样的情况,结合Spring Boot 1.5.x的特性,咱们一步步排查解决:

一、先确认日志配置文件是否正确打包进Jar

首先得排查最基础的问题:你的日志配置文件(比如logback-spring.xml或者application.properties里的日志相关配置)是不是放在src/main/resources目录下?只有放在这个目录,Maven/Gradle打包时才会自动把它打进Jar的BOOT-INF/classes目录里。

你可以用这个命令检查Jar内容,确认配置文件是否存在:

jar tf my-service-0.1.0.jar | grep logback-spring.xml
# 如果是用application.properties配置日志,就换成下面的命令
jar tf my-service-0.1.0.jar | grep application.properties

要是找不到配置文件,那就是打包时漏了,调整你的构建脚本(Maven的pom.xml或者Gradle的build.gradle),确保资源文件被正确包含进Jar包。

二、检查日志文件路径的配置逻辑

在IDE里运行时,相对路径是基于项目根目录的,但Jar运行时的工作目录是你执行java -jar命令的目录——这时候如果你的日志路径是相对路径(比如logs/spring.log),它会在当前工作目录下创建,而不是你预期的目录。

建议改成绝对路径,或者用Spring Boot提供的系统变量来适配:
比如在application.properties里配置:

# 用绝对路径指定日志文件位置
logging.file=/opt/my-service/logs/spring.log
# 或者用相对路径,但明确基于Jar所在目录
logging.file=${user.dir}/logs/spring.log

如果用logback配置,就在logback-spring.xml里调整:

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${user.dir}/logs/spring.log</file>
    <!-- 其他滚动策略、编码器配置... -->
</appender>

${user.dir}就是你执行java -jar命令时的当前工作目录,你也可以自己定义环境变量来指定固定路径。

三、检查运行用户的文件权限

如果日志路径的目录不存在,Spring Boot会尝试自动创建,但如果运行Jar的用户没有创建目录或写入文件的权限,就会默默失败,不会抛出明显错误(只会看不到日志文件生成)。

你可以手动创建目标目录并赋予权限:

# 比如目标目录是/opt/my-service/logs
mkdir -p /opt/my-service/logs
chown your-user:your-group /opt/my-service/logs
chmod 755 /opt/my-service/logs

之后再重新运行Jar试试。

四、避开Spring Boot 1.5.x的日志配置冲突

Spring Boot 1.5.x默认用logback作为日志框架,如果你没有自定义配置,它会默认在当前工作目录生成spring.log,但如果你的配置里同时设置了logging.file和logging.path,就可能出现异常(1.5.x版本里logging.file优先级更高,但同时设置会导致路径解析混乱)。

确保你的配置里不要同时设置这两个参数:

# 正确配置:只设置logging.file
logging.file=/opt/my-service/logs/spring.log
# 错误配置:同时设置两个,会导致路径解析异常
# logging.path=/opt/my-service/logs
# logging.file=spring.log

五、开启调试日志定位细节

如果上面的方法都没解决,你可以在运行Jar时添加调试参数,查看Spring Boot加载日志配置的详细过程,帮你定位问题:

java -Dlogging.level.org.springframework.boot=DEBUG -jar my-service-0.1.0.jar

这样控制台会输出Spring Boot加载日志配置的所有细节,比如它找到了哪个配置文件、路径解析成了什么、有没有权限报错等。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:28:17