2017-01-31 81 views
0

我有以下特性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 

,它仍然與名稱"

+0

這語法僅記錄在log4j 2.X中,因此請確保您使用的是正確的版本。 – AMB

+0

好吧,我有'1.2.17',我該如何修改? – AbtPst

+0

你能顯示你的完整配置文件嗎?另外,請注意,Log4j 2將在類路徑中查找名爲log4j2.xml(或屬性,json或yml)的文件。請注意名稱中的2。它會默認忽略log4j.xml和log4j.properties。 –

回答

0

添加爲答案創建該文件夾:

您應該刪除的log4j 1.2.17,並添加log4j的2.X庫:

​​

+0

恐怕沒有幫助 – AbtPst

+0

從網站(如何遷移的log4j)https://logging.apache.org/log4j/2.x/manual/migration.html – AMB

+0

使用log4j.appender.FILE.File = 「$ {SYS:LOG_DIR} /log.out」。順便說一句,你可以閱讀一些http://logging.apache.org/log4j/2.x/manual/lookups.html – AMB