2017-11-14 29 views
1

私は、ドッキング環境でlog4j2.xmlを使用するスプリングブートベースのアプリケーションを持っています。log4j2でdocker passed環境変数を使用するには?

ドッカーを起動すると、ログがどこに送られるのかを指定するために-e "LOG4J_PATH=/tmp/app.log"を渡します。

次に、log4j2.xmlではfileName="${env:LOG4J_PATH}"を使用しますが、これは機能しません。私は何時間もウェブを検索したので、ダブル$を試して、envの代わりにsysを試しました。

このSystem.getenv("LOG4J_PATH")(new EnvironmentLookup()).lookup("LOG4J_PATH")はうまく動作するので、変数が実行中のイメージに渡されていることがわかりましたが、何らかの理由でlog4jがそれを受け取っていないようです。

ドッカーではなく、LOG4J_PATHという環境変数を私の.bash_profileに設定すると、ドッカーとlog4jの間で問題なく動作します。

私は間違っていますか?

+0

多分変数がコンテナ内でアプリケーションを実行しているユーザーとは異なるユーザーに設定されていますか? –

+0

環境変数がコードによって正しく取得されているため、これがどのようにユーザーの問題になるかわかりません。 – OZG

答えて

0

私は渡された環境変数のキーの値の構造を少し変更する必要があると思います。試してみることができます

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

残念ながらそれは役に立たなかった – OZG

関連する問題