2015-07-17 24 views
8

Mam zdefiniowanego Appling RollingFile zdefiniowanego w pliku log4j2.xml.Parametr JVM użytkownika w konfiguracji log4j2

<RollingFile name="RollingFile" fileName="/logs/app.log" 
      filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz"> 
      <PatternLayout> 
       <Pattern>%d{HH:mm:ss.SSS} - %-5p - %m - [%l]%n</Pattern> 
      </PatternLayout> 
      <Policies> 
       <TimeBasedTriggeringPolicy /> 
       <SizeBasedTriggeringPolicy size="10 MB" /> 
      </Policies> 
      <DefaultRolloverStrategy max="20" /> 
</RollingFile> 

Co chcę zrobić, to przekazać ten parametr JVM przy starcie:

-Dapp_home=/home/admin/server 

documentation jest dość prosta. Z tego co rozumiem, powinno działać tak:

<RollingFile name="RollingFile" fileName="${jvmrunargs:app_home}/logs/app.log" 

Ale tak nie jest. Sprawdziłem, że działa on ogólnie, używając ścieżki absolut.

W innych zastosowaniach, gdzie używam log4j (1.x) działa tak:

log4j.appender.file.File=${app_home}/logs/app.log 

Odpowiedz

13

Spójrz na odcinku System Properties Lookup dokumentacji. Jeśli zdefiniować zmienną jako właściwości systemu przy użyciu -D takiego:

-Dapp_home=/home/admin/server 

korzystanie

${sys:app_home} 

w konfiguracji Log4j 2 do niego dostęp.

+1

Twoja odpowiedź jest lepiej napisana, ale treść/odpowiedź jest taka sama. Usuwam moje. Z jakiegoś powodu jest przycisk edycji, użyj go zamiast opublikować duplikat. – alan7678

+0

Nigdy nie używałam przycisku edycji do innych celów niż formatowanie kodu. Czuje się jak manipulowanie cudzą własnością. Ale myślę, że to jest sposób, w jaki powinien działać Stackoverflow. Zapamiętam to następnym razem. Dzięki za wskazanie tego! – hzpz

+0

Ta sama odpowiedź, ten sam wynik! To działa! :) Dziękuję wam obu! – Chris