部署后的Spring Boot应用spring-boot-logger.log存储路径配置问题
问题原因
- 部署到服务器报错:你配置的
./logs是相对路径,Tomcat服务启动时的工作目录无写入权限,也不存在对应相对路径下的logs目录,导致无法创建日志文件。 - 本地打包报错:本地运行/单元测试场景没有部署Tomcat,不存在
catalina.base系统变量,Spring无法解析占位符。
修复方案
方案1:修改logback-spring.xml配置(推荐)
直接修改你配置里的LOGS属性,给变量加默认 fallback 值即可,无需其他改动:
<!-- 替换原来的<property name="LOGS" value="./logs" /> 为下面的配置 --> <property name="LOGS" value="${catalina.base:-.}/logs" />
解释:${catalina.base:-.}的意思是如果系统存在catalina.base变量(即Tomcat部署环境)就用该值,否则用当前工作目录.,完美适配本地开发和服务器部署两种场景。
方案2:修改application.properties配置
如果你想用Spring Boot的配置项指定日志路径,给占位符加默认值即可:
# 没有catalina.base变量时默认用当前用户工作目录,没有service.name变量时默认日志名是spring-boot-logger.log logging.file.name = ${catalina.base:${user.dir}}/logs/${service.name:spring-boot-logger}.log
额外注意项
- 部署到服务器后需确认Tomcat运行用户对
${CATALINA_BASE}/logs目录有读写权限,默认Tomcat安装后该目录权限是正常的,若手动改过权限需自行调整。 - 若你本地开发也想固定日志输出路径,直接调整fallback的默认值即可,比如改成
${user.home}/logs就会输出到当前用户目录下的logs文件夹。
内容的提问来源于stack exchange,提问作者Anuska
相关产品推荐
相关产品推荐

