scala - 使用 $ 符号无法在 Scala 中读取环境变量
问题描述
在 Scala 环境属性中添加属性
val sysProps = System.getProperties
sysProps.setProperty("current.date.time", LocalDateTime.now().toString())
我能够保存这个属性。
我尝试current.date.time
在 log4j.properties 中访问此属性(),如下所示
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
上述实现并不能帮助我从环境属性访问变量并生成具有预期命名约定的日志文件。
解决方案
JVM 具有可以-D
在 VM 启动时通过参数传递的属性。-Dprop=value
. 这些属性可以通过System.getProperties
API 调用读取。有关更多信息,请参阅文档。
环境变量不是在 JVM 启动时指定的,而是由您的启动环境(可以是 shell、bash 等)独立于 VM 管理。您无法更改已运行 VM 中的环境变量。这些变量可以通过以下方式读取System.getenv()
$
是log4j中的查找运算符,可用于解析带有前缀的环境变量或带有 前缀env:
的主要参数查找main:
。
您可以使用main:current.date.time
并初始化您的值,如下所示
MainMapLookup.setMainArguments(Array("--current.date.time", LocalDateTime.now().toString()));
确保MainMapLookup
在初始化日志记录之前调用它。
推荐阅读
- ios - 使用 Axios 将本机反应到 Django [错误:请求失败,状态码 400]
- firebase - 当客户端互联网连接变慢时,Firebase 实时数据库逻辑失败
- java - 在 BST 中查找最接近值的问题
- halide - 如何将“第 21 课:自动调度器”的自动调度器切换到 Adam2019 或 Li2018
- python - 一个 numpy 数组可以是 pandas 数据框中的一个元素吗?
- node.js - 处理从 NodeJS 连接和关闭 MongoDB 客户端的正确方法是什么(不使用 Mongoose!)?
- python - 为什么我的 AWS Lambda 函数返回 null?(Python代码)
- regex - Perl 正则表达式匹配单冒号的出现
- disassembly - 反汇编后长连续的“添加”操作码数
- yocto - ntp recipe 没有安装 ntpdate 文件