我可能会问一些微不足道的事情,但我所尝试的似乎并不奏效。使用我的“MAIN”appender,我想在任何地方记录所有“信息”,除了第三方包(让我们称之为boring
),这会产生太多的信息(所以我只看警告) 。另外,我想在我的interesting
包中记录“debug”。这适用于以下logback.groovy
:
root(INFO, ["MAIN"])
logger("interesting", DEBUG, ["MAIN"])
logger("boring", WARN, ["MAIN"])
现在我想配置一个不同的appender,记录一个级别,比如
root(DEBUG, ["DETAIL"])
logger("interesting", TRACE, ["DETAIL"])
logger("boring", INFO, ["DETAIL"])
这也有效,但是当我把两者放在一起时,却没有。我可以想象这是由于每个Logger
对于给定级别开启或关闭的事实。我知道对于我想要的行为,“无聊”包中的记录器必须位于INFO级别(因为DETAIL
appender)并且MAIN
appender的消息是被过滤,但我看不出如何配置它。
我看到我几乎做错了什么。这条线
logger("interesting", DEBUG, ["MAIN"])
没有说“为MAIN appender和包interesting
及以下”设置水平为DEBUG,而是做了两个独立的事情:
interesting
及Logger
答案 0 :(得分:0)
如果不编写自己的过滤器,这似乎是不可能的,幸运的是很容易。我最终得到了像
这样的东西root(DEBUG, ["DETAIL", "MAIN"])
// settings for the most detailed appender
logger("interesting", TRACE)
logger("boring", INFO)
appender("MAIN", ...) {
...
filter = new MyFilter()
.deny("boring", INFO)
.accept("interesting", DEBUG)
.deny("", DEBUG)
}
其中deny
和accept
是我向MyFilter
添加条目的方法。条目按顺序评估,即
boring
及更低版本中,等级INFO
或以下的所有内容都将被拒绝interesting
及以下,<{1}}或更高级别的所有内容都已被接受DEBUG
或更高级别的所有内容都将被拒绝受this question的启发。