2017-07-17 704 views
0

我想配置在Tomcat上運行的應用程序的日誌系統,我希望它在$ CATALINA_HOME/logs下登錄,而不用硬編碼路徑。 在這樣做,所以我創造了這個配置文件log4j2.yaml:Log4j配置:如何在yaml配置文件中使用環境變量log4j2.yaml

Configuration: 
    name: Default 
    Properties: 
    Property: 
     name: log-path 
     value: "/opt/apache-tomcat-8.5.15/logs" 
    Appenders: 
    Console: 
     name: Console_Appender 
     target: SYSTEM_OUT 
     PatternLayout: 
     pattern: "[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" 
    File: 
     name: File_Appender 
     fileName: ${log-path}/logfile.log 
     PatternLayout: 
     pattern: "[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" 
    Loggers: 
    Root: 
     level: error 
     AppenderRef: 
     - ref: Console_Appender 
    Logger: 
     - name: myname 
     level: debug 
     AppenderRef: 
      - ref: File_Appender 

,這實際工作。我想用環境變量CATALINA_HOME替換/opt/apache-tomcat-8.5.15。這是什麼語法?

+0

你包括[標籤:YAML]這個變量標記,但是YAML中沒有任何東西可以處理環境變量。 – Anthon

+0

所以這個https://logging.apache.org/log4j/2.x/manual/lookups.html#Environment_Lookup只能在xml配置中實現,但是在yaml中做類似的事情是不可能的? – oidualc

+0

情況並非一定如此。這僅僅是YAML固有的東西。它需要通過在YAML解析器加載之後處理數據結構,或者在處理文本處理YAML解析器之前,在YAML之上(在'log4j2','tomcat'或任何其他)中實現。 – Anthon

回答

1

如果你或其他人還在尋找這個

的ENV屬性設置像

-DYourSystemProperies=/home/winner 

您可以指定使用

RollingFile: 
     - name: RollingFile_Appender 
     fileName: ${sys:YourSystemProperies}/abc.log