java - 如何在 log4j 的配置文件中为文件附加程序提供环境变量路径

标签 java log4j environment-variables

我有一个 log4j.xml 配置文件。和一个 RollingFileAppender 我需要提供用于存储日志的文件路径。问题是我的代码将作为可运行的 jar 部署在 Unix 机器上。所以如果我传递这样的参数:

value=logs/messages.log"

它在我的 HOME 目录中创建名为 logs 的文件夹,并将所有消息写入此目录中的文件。

我将环境变量设置为某个值。我想使用该变量的路径并在该路径下写入消息。我怎样才能实现它?

我试过用这个:

value="${MY_HOME}/logs/message.log"

但这不起作用。任何人都可以提出解决这个问题的方法吗?

最佳答案

解析其配置文件时,表达式${MY_HOME}将扩展为名为MY_HOME系统属性的值,而不是系统环境变量。两者是有区别的。

要以简洁的方式实现这一点,您必须在 JVM 调用行中添加类似这样的内容:

-DMY_HOME=$MY_HOME

这将定义 Java 系统属性 MY_HOME 以包含环境变量 MY_HOME 的值。

关于java - 如何在 log4j 的配置文件中为文件附加程序提供环境变量路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13066042/

相关文章:

java - 找不到在对象类中定义的符号(方法)

java - log4j 不加载自定义属性配置

macros - Erlang:读取环境变量并将它们分配给常量

logging - 如何在 log4j.xml 中设置过滤器

PHP DOTENV 无法加载环境变量

c - printf 和 getenv 错误 - 需要一个 char* 但参数 2 是 int 类型

java - 将子类传递给具有抽象类参数的方法

java - 有没有办法使用 where 条件将 Mediastore 光标设置到 Rowset 中的特定行?

java - 从excel中读取数据查询数据库

java - 通过log4j将junit测试用例的日志保存到单独的文件中