gpt4 book ai didi

java - logback.xml : overriding root level for one class only

转载 作者:数据小太阳 更新时间:2023-10-29 02:07:49 24 4
gpt4 key购买 nike

给定 logback.xml 中的以下根目录:

<root level="INFO">
<appender-ref ref="FILE" />
<appender-ref ref="STDOUT" />
</root>

定义以下日志记录规则:

<logger name="com.myproject.mypackage.MyClass" level="DEBUG">
<appender-ref ref="STDOUT" />
</logger>

myclass 中的日志级别不会是 DEBUG,因为根级别是 info。但我只想查看这个特定类中的调试日志。这是否可以在不更改根级别的情况下实现(这会导致应用从各处吐出调试日志)?

编辑:我也试过这个:

<logger name="com.myproject" level="INFO"/>
<logger name="com.myproject.mypackage.MyClass" level="DEBUG">

<root level="DEBUG">
<appender-ref ref="FILE" />
<appender-ref ref="STDOUT" />
</root>

所以我的想法是将根设置为 debug,这样一切都是 DEBUG,但是将“com.myproject”下的所有内容都设置为 info,这样日志级别实际上是 INFO,但将 MyClass 设置为 DEBUG。它没有用:(

最佳答案

“Root”级别不限制其他记录器的级别,它只是设置默认值。所以<root level="INFO"><logger name="some.name" level="DEBUG">非常适合在一起,不需要放松“根”的水平。因此,这两个示例都应登录名为 com.myproject.mypackage.MyClass 的记录器的调试级别.因此,如果您的配置记录了某些内容但未从 com.myproject.mypackage.MyClass 记录,问题应该在另一个地方。

另外,如果你想让一些记录器只登录到它自己的附加程序,就像第一个例子一样,你应该使用 additivity="false" logger 上的属性,否则它将记录到根附加程序和特定于记录器的附加程序。

例如:

import org.slf4j.LoggerFactory;

class Scratch {
public static void main(String[] args) {
LoggerFactory.getLogger("some.logger").info("info msg");
LoggerFactory.getLogger("another.logger").info("info msg");
LoggerFactory.getLogger("another.logger").error("error msg");
}
}

logback.xml:

<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>STDOUT: %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>

<appender name="STDOUT2" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>STDOUT2: %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>

<logger name="some.logger" level="info" additivity="false">
<appender-ref ref="STDOUT2" />
</logger>

<root level="error">
<appender-ref ref="STDOUT" />
</root>
</configuration>

结果:

STDOUT2: 16:58:58.973 [main] INFO  some.logger - info msg
STDOUT: 16:58:58.979 [main] ERROR another.logger - error msg

关于java - logback.xml : overriding root level for one class only,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42413711/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com