私は、ドッキング環境で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の間で問題なく動作します。
私は間違っていますか?
多分変数がコンテナ内でアプリケーションを実行しているユーザーとは異なるユーザーに設定されていますか? –
環境変数がコードによって正しく取得されているため、これがどのようにユーザーの問題になるかわかりません。 – OZG