鉴于 logback.xml 中的以下根:
<root level="INFO">
<appender-ref ref="FILE" />
<appender-ref ref="STDOUT" />
</root>
Run Code Online (Sandbox Code Playgroud)
定义以下日志记录规则:
<logger name="com.myproject.mypackage.MyClass" level="DEBUG">
<appender-ref ref="STDOUT" />
</logger>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
所以我们的想法是将根设置为调试,所以一切都是调试,但将“com.myproject”下的所有内容都设置为信息,因此日志级别确实是信息,但将 MyClass 设置为调试。它没有用:(
“root”级别不限制其他记录器的级别,它只是设置默认值。所以<root level="INFO">和<logger name="some.name" level="DEBUG">非常适合在一起,而且你不需要放松“根”级别。因此,这两个示例都应该登录名为 的记录器的调试级别com.myproject.mypackage.MyClass。因此,如果您的配置记录了某些内容并且没有从 记录com.myproject.mypackage.MyClass,则问题应该出在另一个地方。
此外,如果您希望某个记录器仅登录到它自己的 appender,就像在第一个示例中一样,您应该使用additivity="false"属性 on logger,否则它将同时登录到根 appender 和特定于 logger 的 appender。
例如:
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");
}
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
结果:
STDOUT2: 16:58:58.973 [main] INFO some.logger - info msg
STDOUT: 16:58:58.979 [main] ERROR another.logger - error msg
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6937 次 |
| 最近记录: |