在我的Spring Boot应用程序中,我启用了执行器,我可以在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
如果configuredLevel
的{{1}}未设置,则更改com.parent.child
的日志记录级别会更改com.parent
' s {{1 }}
是否有办法在单个请求中覆盖所有子级的记录器级别,即使已设置com.parent.child
?
我尝试使用effectiveLevel
作为通配符,但它没有用。我试图做的是什么,或者我必须分别重置所有孩子的configuredLevel
?
答案 0 :(得分:0)
我不认为可以覆盖已经明确设置子记录器级别的所有子记录器级别。
Spring Boot的LoggingEndpoint
委托给ch.qos.logback.classic.Logger.handleParentLevelChange()
并且该方法在if(this.level == null) { }
上有一个条件块,所以当递归调用(遍历所有记录器)到达&# 34; com.parent.child"它什么都不会因为" com.parent.child"已经有一个指定的级别。
当然,您可以在特定记录器上设置configuredLevel,因为它调用ch.qos.logback.classic.Logger.setLevel()
,因此不受handleParentLevelChange()
中条件块的约束。