【问题标题】:Can you use env var expansion such as %APPDATA% in log4j.properties file?您可以在 log4j.properties 文件中使用 env var 扩展,例如 %APPDATA% 吗?
【发布时间】:2012-02-23 06:28:49
【问题描述】:

您可以在log4j.properties 文件中使用诸如%APPDATA% 之类的环境变量扩展吗?

我需要将此文件部署为我的应用程序的一部分,并在以下行中指定一个用户特定的文件夹,例如 %APPDATA%。这可能吗?

log4j.appender.A2.File=%APPDATA%/mylog.log

【问题讨论】:

    标签: java logging environment-variables


    【解决方案1】:

    不能直接引用环境变量,但是可以引用Java“系统属性”。

    例如,在启动应用程序时,在命令行中设置系统属性:

    java -Dapp.data="%APPDATA%" ...
    

    在您的 log4j.properties 文件中,引用您在命令行中设置的系统属性:

    log4j.appender.A2.File=${app.data}/mylog.log
    

    【讨论】:

    • 由于系统架构的原因,我无法按照您描述的方式创建任何 Java 系统变量。我可以使用任何内置的 Java 系统属性吗? user.dir呢?
    • %APPDATA% = %USERPROFILE%\Application Data = System.getProperty("user.home")\Application Data
    • 对不起,是 System.getProperty("user.home") = %USERPROFILE%
    • @CraigJ 你能设置一个 Windows 环境变量吗?如果是这样,you could specify this information in the JAVA_TOOL_OPTIONS variable, 并且每当 JVM 启动时都会被拾取,就好像它是在命令行中指定的一样。
    • @erickson:${user.home}/Application Data 对我来说效果很好。此路径在 Win7 上解析为 %USERPROFILE%\AppData\Roaming,这正是我想要的。
    猜你喜欢
    • 1970-01-01
    • 2017-12-02
    • 2023-02-17
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    相关资源
    最近更新 更多