【问题标题】:logback specify the location of the default configuration file as a system property not workinglogback 将默认配置文件的位置指定为系统属性不起作用
【发布时间】:2012-02-10 20:31:19
【问题描述】:

export logback.configurationFile=123 在 mac os x 上得到了这个: "-bash: export: `logback.configurationFile=123': 不是一个有效的标识符"

试过export logback_configurationFile=123 有效。但 logback 似乎无法识别该环境变量。有什么建议吗?

【问题讨论】:

  • logback 甚至会寻找那个变量吗?我以为它在类路径上寻找 logback.xml?
  • 确实如此。如果我执行 java -Dlogback.configurationFile=whatever,它将起作用。
  • 很好,我很确定 bash 不允许在 env 变量中使用点(如果我记得 correclyt,bash 是 OsX 中的默认值)。有一些 shell 支持这个,比如 csh 和 tcsh...
  • 用 -D 传递岂不是足够好?
  • @PeterLiljenberg 如果它是一个网络应用程序怎么办?

标签: logging logback


【解决方案1】:

-Dlogback.configurationFile 与将其设置为环境变量不同。

-D 标志是您程序的 Java 参数(可由System.getProperty() 访问),而由export 定义的环境变量将可由System.getenv() 访问。 查看 Logback 代码,它似乎使用System.getProperty() 来读取logback.configurationFile 值。

所以实际上您必须在启动时将参数传递给JVM,这意味着您可以将环境变量设置为您喜欢的任何内容,然后在启动JVM时使用它。

export LOGBACK_CONFIG_FILE_LOCATION=/tmp/logback.conf
java -Dlogback.configurationFile=${LOGBACK_CONFIG_FILE_LOCATION}

【讨论】:

【解决方案2】:

我想这种方式也应该可行。但我并没有真正亲自尝试过。

export JAVA_OPTS="$JAVA_OPTS -Dlogback.configurationFile=123"

然后,您无需在应用调用时设置 opt。但缺点是所有正在运行的 Java 程序都会使用此设置。

【讨论】:

  • 投机对任何人都没有帮助。试试看或者不回答。
【解决方案3】:

您还可以执行以下操作 使用 logback configurationFile 导出 JVM 参数。

export ALC_JVM_ARGS="-Dlogback.configurationFile=logconfig.xml"

导出您需要的其他内容,例如主类及其参数

export MAIN_CLASS="Spring"
export MAIN_CLASS_ARGS="beans.xml"

然后执行你的程序

exec java $ALC_JVM_ARGS $MAIN_CLASS $MAIN_CLASS_ARGS

【讨论】:

    猜你喜欢
    • 2013-07-18
    • 2019-02-01
    • 2015-04-22
    • 2020-06-01
    • 2016-11-11
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 2022-10-19
    相关资源
    最近更新 更多