思路:
log配置文件的level无效,是因为启动spring的时候,log尚未加载。
解决方案:
1、web.xml中的log监听器的启动顺序早于spring监听器。
2、log配置文件生效后,可根据日志种类设置level进行拦截。
参考:
web.xml:
<listener>
<listener-class>
ch.qos.logback.ext.spring.web.LogbackConfigListener
</listener-class>
</listener>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
logback.xml:
<logger name="org.springframework" level="ERROR"/>
<logger name="org.mybatis" level="ERROR"/>
补充:
关于level可以在多个地方进行设置。
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %X{reqid} %c:%L %m%n</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="CONSOLE"/>
</root>
此处的level设置的是根节点,适用于CONSOLE(控制台),level为DEBUG,而<logger name="org.mybatis" level="ERROR"/>处的level的节点精度是高于根节点的,org.mybatis的日志在控制台输出时,level按ERROR处理。