2017-11-14 1 views
1

Ich habe eine Spring-Boot-basierte Anwendung, die log4j2.xml in einer dockerisierten Umgebung verwendet.Wie benutze ich die Umgebungsvariable docker in log4j2?

Wenn ich das Andockfenster öffne, übergebe ich -e "LOG4J_PATH=/tmp/app.log", um anzugeben, wohin die Protokolle gehen sollen.

Als nächstes verwende ich in log4j2.xmlfileName="${env:LOG4J_PATH}", aber das funktioniert nicht. Ich suchte im Internet nach Stunden und versuchte somit double $ und versuchte sys statt env ... nichts.

Diese System.getenv("LOG4J_PATH") und (new EnvironmentLookup()).lookup("LOG4J_PATH") gut funktionieren, so weiß ich, dass der Variable ok zur Lauf Bild übergeben wird, aber aus irgendeinem Grunde die log4j scheint nicht, um ihn abzuholen.

Wenn ich dies nicht über ein Andockfenster und setzen Sie die LOG4J_PATH Umgebungsvariable in meinem .bash_profile funktioniert es gut, so ist dies etwas zwischen Docker und log4j.

Was mache ich falsch?

+0

vielleicht wird die Variable in/mit einem anderen Benutzer als derjenige, der Ihre Anwendung innerhalb des Containers ausführt eingestellt? –

+0

Beachten Sie, dass die Umgebungsvariable korrekt durch den Code abgerufen wird, also sehe ich nicht, wie dies ein Benutzerproblem sein könnte – OZG

Antwort

0

Ich glaube, dass Sie die Schlüsselwertstruktur ein bisschen für Ihre übergebene Umgebungsvariable ändern müssen. Können Sie versuchen

docker run -e LOG4J_PATH='/tmp/app.log' 
+0

Leider hat das nicht geholfen – OZG

Verwandte Themen