首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用$ symbol读取Scala中的环境变量

无法使用$ symbol读取Scala中的环境变量
EN

Stack Overflow用户
提问于 2019-11-27 20:09:56
回答 1查看 107关注 0票数 0

在Scala环境属性中添加属性

代码语言:javascript
复制
val sysProps = System.getProperties
sysProps.setProperty("current.date.time", LocalDateTime.now().toString())

我可以拯救这个财产。

我尝试在log4j.properties中访问这个属性(current.date.time),如下所示

代码语言:javascript
复制
log4j.appender.file.File=C:/Users/vsami/Desktop/Demo_${current.date.time}.log
log4j.appender.file.File=C:/Users/vsami/Desktop/Demo_${env:current.date.time}.log

在上面的位置生成日志文件,如Demo_.log,预期为:- Demo_2019/11/27T13:21:00.log

上面的实现不能帮助我从环境属性访问变量,并使用预期的命名约定生成日志文件。

EN

回答 1

Stack Overflow用户

发布于 2019-11-27 23:20:42

JVM的属性可以在VM启动时通过-D参数传递。-Dprop=value。这些属性可以通过System.getProperties接口调用读取。有关详细信息,请参阅docs

环境变量不是在JVM引导时指定的,并且由引导环境独立于VM进行管理(可以是shell、bash等)。您不能在已运行的VM中更改环境变量。这些变量可以通过System.getenv()读取

$log4j中的查找运算符,可用于解析前缀为env:的环境变量或前缀为main:Main Arguments Lookup

您可以使用main:current.date.time并按如下方式初始化值

代码语言:javascript
复制
MainMapLookup.setMainArguments(Array("--current.date.time", LocalDateTime.now().toString()));

确保在初始化日志记录之前调用了MainMapLookup

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59069940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档