我有以下特性Log4J的:使用環境變量
# 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中,因此請確保您使用的是正確的版本。 – AMB
好吧,我有'1.2.17',我該如何修改? – AbtPst
你能顯示你的完整配置文件嗎?另外,請注意,Log4j 2將在類路徑中查找名爲log4j2.xml(或屬性,json或yml)的文件。請注意名稱中的2。它會默認忽略log4j.xml和log4j.properties。 –