springboot从2.1.3升级到2.3.5后控制台自动输出http请求日志RequestResponseBodyMethodProcessor和RequestMappingHandlerMapping
- 推荐使用第二个方案简单 明了 方便 快捷
- 方案一
- 第一步定义TurboFilter
- 第二步配置logback
- 方案二 直接配置logback的配置XML
- 推荐使用第二个方案简单 明了 方便 快捷
推荐使用第二个方案简单 明了 方便 快捷
停止输出如下日志方案:
DEBUG org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor Read "application/json;charset=UTF-8" to [QueryData(pageNo=1, pageSize=10, sortField=, sortOrder=asc, params={Q_XM_S_EQ=llsydn, Q_SJH_S_EQ=135 (truncated)...]
方案一
第一步定义TurboFilter
public class MyTurboFilter extends TurboFilter {
@Override
public FilterReply decide(Marker marker, Logger logger, Level level, String format, Object[] params, Throwable throwable) {
if (logger.getName().equals(“org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor”)) {
return FilterReply.DENY; //返回accept
}
return FilterReply.NEUTRAL;
}
}
关于logback自带过滤器
logback提供了两种过滤器:正则过滤器与turbo过滤器。
正则过滤器:正则过滤器继承于抽象类Filter,Filter本质上只包含以ILoggingEvent为入参的一个方法decide()。
基于Ternary Logic,过滤器以排序列表的形式组合在一起。系统按照这个顺序调用每个过滤器的decide(ILoggingEvent event)方法。decide方法返回结果是枚举类FilterReply(DENY, NEUTRAL, ACCEPT其中一个)。返回值为DENY时,日志事件直接丢弃这条日志,不会再传递给剩下的过滤器。返回值为NEUTRAL时,则传递给下面的过滤器。返回值为ACCEPT时,日志事件立即处理这条日志,跳过调用其它过滤器。
其中: FilterReply 含义如下
第二步配置logback
logback的配置XML
<configuration>
<!-- 自定义类的路径 -->
<turboFilter class="**.MyTurboFilter" />
......
</configuration>
方案二 直接配置logback的配置XML
这是因为RequestResponseBodyMethodProcessor和RequestMappingHandlerMapping同属annotation包中
<configuration>
<!-- 自定义类的路径 -->
<logger name="org.springframework.web.servlet.mvc.method.annotation" leverl ="off" />
......
</configuration>
在比如说,想关闭自动注入的控制台打印信息,如下配置即可
<logger name="org.springframework.boot.autoconfigure.logging" level="off"></logger>