Typesafe配置环境变量

时间:2013-09-12 17:27:44

标签: configuration playframework akka typesafe

尝试在配置文件中使用${HOSTNAME}不起作用!根据文档,配置文件应解析文档中提到的环境变量:

  如果它们在配置本身中没有解析,

替换会回退到环境变量,因此$ {HOME}将按预期工作。此外,大多数配置都合并了系统属性,因此您可以使用$ {user.home}。

有没有办法让主机名进入配置文件?

生殖
host.name=${HOSTNAME}添加到application.conf文件,然后尝试从任何位置访问它。例如,尝试添加

Logger.info(s"Hostname is ${current.configuration.getString("host.name").getOrElse("NOT-FOUND")}")

Global.scala

环境
这是在echo $HOSTNAME生成precise32的RHEL6环境中运行的,因此环境变量存在,这不是程序hostname

3 个答案:

答案 0 :(得分:7)

这可能不起作用,因为$HOSTNAME实际上似乎不是一个环境变量:

jamesw@T430s:~$ echo $HOSTNAME
T430s
jamesw@T430s:~$ export|grep HOSTNAME
jamesw@T430s:~$

所以它必须是一些其他特殊的bash事物。

答案 1 :(得分:7)

解决方案似乎是通过系统属性-Dhost.name=$HOSTNAME-Dhost.name=$(hostname)传递主机名。我想在Windows中它会是其他东西,但这适用于* NIX环境。

除非有人能提出更清洁的东西,否则这将是公认的答案。

答案 2 :(得分:1)

您应该看到调用System.getenv("HOSTNAME")是否返回非空值。如果没有,则HOSTNAME不是根据java运行时的env变量,这对于将其映射到typesafe配置中的配置属性非常重要。我用HOSTNAME尝试了这个,尽管我可以在bash中回应它,但它在java中不能用作env替换。我将其更改为USER,一切都按预期工作。