【问题标题】:Resolve Username In Java Properties File for Usage Tracker为 Usage Tracker 解析 Java 属性文件中的用户名
【发布时间】:2014-12-01 20:35:17
【问题描述】:

我正在尝试使用 Java Usage Tracker 来审核 Java 使用情况。请参阅以下信息:https://docs.oracle.com/javacomponents/usage-tracker/overview/

属性文件中的一个属性指定日志的保存位置(用户的主位置):

# Settings for logging to a file:
# Use forward slashes (/) because backslash is an escape character in a
# properties file.
com.oracle.usagetracker.logToFile = ${user.home}/.java_usagetracker

这将正确创建文件:C:\Users\CURRENTUSER\.java_usagetracker。

如何将当前用户的登录名和/或主机名添加到文件中?

我试过了:

com.oracle.usagetracker.logToFile = ${user.home}/${user.name}.java_usagetracker

还有许多其他变体,但无法正确掷骰子。看来 user.name 是一个有效的属性(见这里:https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html

仅供参考:我正在尝试将日志文件放在路径中没有用户名的网络位置,这就是为什么我需要在文件名中包含用户名。

【问题讨论】:

    标签: java properties-file


    【解决方案1】:

    如果您查看Oracle's documentation,您会发现他们只指定 ${user.home} 将被扩展。没有提到其他允许的属性:

    您可以在路径名中指定 ${user.home}。该属性将扩展到用户的主目录。例如(忽略换行):

    com.oracle.usagetracker.logToFile = ${user.home}/.java_usagetracker

    【讨论】:

      【解决方案2】:

      我相信您正在尝试替换属性文件中的内置环境变量值。您忘记的是,Java 属性文件的编译方式与“.java”文件不同。此类属性文件必须通过Properties 库读取。

      这里已经回答了一个类似的问题: Properties file : Use key as variable

      【讨论】:

      • 所以 ${user.home} 在别处定义并解析但 ${user.name} 显然不是?抱歉,我是 Java 不可知论者。
      猜你喜欢
      • 1970-01-01
      • 2014-02-24
      • 2016-10-03
      • 1970-01-01
      • 2018-09-01
      • 2022-10-03
      • 2013-05-26
      • 1970-01-01
      相关资源
      最近更新 更多