Log4J:无法使用环境变量

时间:2017-01-31 17:03:18

标签: java log4j rollingfileappender

我有以下属性

# 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

它仍然会创建名为"

的文件夹

1 个答案:

答案 0 :(得分:0)

添加为答案:

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

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