下面是我在Windows的SpringBoot中读取环境变量(日志文件夹的位置)的操作。
-
在Windows Server中,我为"log_home"设置了一个系统环境变量。与值和SpringBoot应该用来写日志的目录。
-
在SpringBoot的应用程序。属性,我有:
logging.file.name = $ {LOG_HOME}/ws.log
作品太棒了!
但是在Ubuntu Linux 20.04中,同样的方法对我来说根本不起作用。
当WAR文件试图在Ubuntu 20.04上使用类似的技术部署时:
- (在。bashrc中):export LOG_HOME =/home/ubuntu/logs
- 重新启动(重新加载环境)
当尝试部署WAR文件时,我在Tomcat日志中得到以下错误:
. lang。${LOG_HOME}/ws.log">
所以,Spring似乎没有看到在Ubuntu中设置的环境变量。
我写了一个简单的Java程序,只是为了检查环境变量的值,它们都按预期创建了,包括Linux "printenv"中显示的LOG_HOME。
如果可能的话,我需要一种可以在Ubuntu上工作而不改变Windows Server上工作的SpringBoot实现的技术。
提前感谢您的建议。
而不是像
那样在shell会话中导出export LOG_HOME = /home/ubuntu/logs
尝试将此作为启动命令中的-D VM参数例如:java -cp=xxx mainclass -DLOG_HOME=/home/ubuntu/log
如果你正在使用tomcat,那么:可添加虚拟机参数catalina.sh file under CATALINA_OPTS.
对于tomcat,将环境变量添加到$TOMCAT_HOME/bin/setenv.sh
,其中$TOMCAT_HOME
是tomcat的安装目录。
我的解决方案是编辑Catalina.sh文件并添加"-D"CATALINA_OPTS下的名称-值对选项。感谢所有发帖的人。:)