使用logback随意控制spring源码相关包的日志输出

2022-03-29 14:09:11 浏览数 (1)

之所以我们能随意控制spring相关包(使用slf4j记录日志的包-大部分包),得益于以下特性:

1.slf4j的LoggerFactory.getLogger(Application.class)返回的是与名字相关的单例类,每个类名只创建一个Logger实例

注: 在logback的LoggerContext类中使用private Map<String, Logger> loggerCache;存储名字对应的logger记录

2.logback的日志级别继承,如果没有定义com.test1.student包的日志级别,那么该包将会继承com.test1包的日志级别,如果存在已com.test1.student包名命名的logger,那么将会使用该包对应的logger级别来记录日志

例子

代码语言:javascript复制
<logger name="com.baeldung.produceimage" level="INFO" />
 <logger name="com.baeldung.produceimage.Application" level="WARN" />
 

那么在Application该类中定义的类对应的logger日志级别为WARN,如果不存在‘<logger name="com.baeldung.produceimage.Application" level="WARN" />’该条配置,那么Application该类中定义的类对应的logger日志级别为INFO

3.所以我们可以在logback.xml中通过下面的方式来控制spring代码日志级别

代码语言:javascript复制
<logger name="org.springframework" level="WARN" />
 <logger name="org.springframework.web.servlet.mvc" level="WARN" />
 

0 人点赞