【问题标题】:Log4J : Cannot create file using environment variableLog4J:无法使用环境变量创建文件
【发布时间】:2017-06-17 05:29:56
【问题描述】:

我有以下属性

# Set the name of the file
log4j.appender.FILE.File="${env:LOG_DIR}/log.out"

我可以看到环境变量为

System.out.println(System.getenv("LOG_DIR"));

给我

../../myLogFolder

但是当我运行我的程序时,它会创建一个名为 " 的文件夹,并在其中创建一个 log.out 文件。为什么log4j.properties不能获取环境变量的值?

这是我的 maven 依赖项

<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.7</version>
        </dependency>

编辑:将所有内容更改为 2.X 合规性

更新的java代码

import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;

public class ABC {

    private static final Logger logger = LogManager.getLogger(ABC.class);

    public static void main(String[] args) {
        System.out.println(System.getenv("LOG_DIR"));
        logger.debug(System.getenv("LOG_DIR"));

    }
}

现在,我在控制台上看到了

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
../../myLogsFolder

它仍然会创建名为 " 的文件夹

【问题讨论】:

  • 此语法仅记录在 log4j 2.X 中,因此请确保您使用的是正确的版本。
  • 哦好的,我有1.2.17,我应该如何修改?
  • 你能显示你的完整配置文件吗?另外,请注意 Log4j 2 将在类路径中查找名为 log4j2.xml(或属性、json 或 yml)的文件。请注意名称中的 2。默认会忽略 log4j.xml 和 log4j.properties。

标签: java log4j rollingfileappender


【解决方案1】:

作为答案添加:

您应该删除 log4j 1.2.17 并添加 log4j 2.X 库:

https://logging.apache.org/log4j/2.x/download.html

【讨论】:

猜你喜欢
  • 2017-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 2015-03-23
相关资源
最近更新 更多