2017-05-11 3 views
0

私は、Googleのkubernetes管理コンテナエンジンで実行されている春のブートJavaサービスを持っています。 Javaサービスはslf4j API経由でログに記録されます(ログはgoogleのstackdriverに転送されますが、これはこの質問の対象外です)。実行時にkubernetes管理サービスのJava slf4jロガーのログレベルを変更するにはどうすればよいですか?

私はkubernetesデプロイメント・ファイル変更することで、ログレベルを変更することができます:これは動作します

spec: 
    template: 
    spec: 
     containers: 
     env: 
     - name: JAVA_OPTS 
      value: -Xmx1g -Dlogging.level.com.example=DEBUG 

を、それがサービスを再デプロイ変更するために(更新deloyment yamlファイルを適用することにより、コンテナを再起動)するために私を必要としログレベル。通常のwar-fileを実行している "通常の" tomcatサーバーと比較すると、ファイル時計はlogback.xml -fileになり、このファイルの変更はtomcatを再起動することなくログに反映されます。 kubernetesで管理されたスプリングブートサービスの実行時にログレベルを制御するのと同じ方法がありますか?

+0

これがお手伝いします確認してください[動的SLF4Jでログレベルを変更します。](http://stackoverflow.com/questions/13442967/how-to-dynamically-change-log-level-in- slf4j-or-log4j) – SubbaReddy

答えて

0

logger endpointを試しましたか?あなたが1つのインスタンスを持っているなら、これは大丈夫だろうと思うかもしれませんが、多分多分これは悪いアプローチです。

0

Codecentric(https://github.com/codecentric/spring-boot-admin)のSpring Boot Adminを使用している場合、実行時にJMX/Jolokia経由でログレベルを変更できます。

また、構成管理システム(git)に変更をコミットした後に、構成の変更をプッシュアウトしてアプリケーションコンテキストを更新できる「Spring Cloud Bus」を実装することもできます。

http://cloud.spring.io/spring-cloud-static/springcloud.html#_push_notifications_and_spring_cloud_bus

関連する問題