2017-06-14 12 views
1

、私はアクチュエータを有効にしている、と私はで私のすべてのロガーを見ることができます。このようなlocalhost:8080/loggersスプリング・ブート・アクチュエータ:一度にパッケージ全体のロガー・レベルを変更できますか?私の春のブートアプリケーションで

"com.parent":{"configuredLevel":"INFO","effectiveLevel":"INFO"}, 
"com.parent.child":{"configuredLevel":"TRACE","effectiveLevel":"TRACE"} 
[...] 

今、私は、要求を送信することにより、ログレベルを変更します。

curl -i -X POST -H 'Content-Type: application/json' -d '{"configuredLevel": "DEBUG"}' http://localhost:8080/loggers/com.parent 

configuredLevelcom.parent.childに設定されていないと、com.parentのログレベルを変更すると、com.parent.childeffectiveLevelが変更されていました。

configuredLevelが既に設定されていても、1回のリクエストですべての子供のロガーレベルを上書きする方法はありますか?

*をワイルドカード記号として使用しようとしましたが、動作しませんでした。私がしようとしていることは可能ですか、またはすべての子供のconfiguredLevelを別々にリセットする必要がありますか?

答えて

0

子ロガーレベルが既に明示的に設定されているすべての子ロガーレベルをオーバーライドすることはできません。 ch.qos.logback.classic.Logger.handleParentLevelChange()

春ブーツのLoggingEndpoint代表団と(すべてのロガーの上に歩く)再帰呼び出しは、それがcom.parent」ので何もしないだろう「com.parent.child」に到着したときに、そのメソッドはそうif(this.level == null) {上の条件ブロックを持っています。 「子」にはすでに割り当てられたレベルがあります。

ch.qos.logback.classic.Logger.setLevel()を呼び出すため、handleParentLevelChange()の条件ブロックの対象ではないため、特定のロガーでconfiguredLevelを設定することはもちろん可能です。

関連する問題