使用logback实现日志打印过滤
logback日志打印过滤
1.只打印sql语句以及参数
true return message.contains("mapper") || message.contains("component") || message.contains("MapperFactoryBean"); NEUTRAL DENY return message.contains("Preparing") || message.contains("Parameters:") || message.contains("Total:"); DENY ACCEPT %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
【使用logback实现日志打印过滤】上面有两个过滤器,
其中第一个过滤器是过滤掉所有包含字符串“mapper”,“component”,“MapperFactoryBean”的日志打印
第二个过滤器是只打印包含字符串”Preparing”,”Paramters:”,”Total:”的日志内容。
logback.xml日志文件过滤器配置简析 自定义过滤器
java代码,目的是在mdc中放值,然后在日志中打印
package com.controller; import com.pojo.JsonData; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController@RequestMapping(path = "/api/log/")public class LoggerController {Logger logger= LoggerFactory.getLogger(getClass()); @RequestMapping(path = "test1")public Object logTest1(){logger.trace("-----trace级别日志-----"); logger.debug("-----debug级别日志-----"); logger.info("-----info级别日志-----"); logger.warn("-----warn级别日志-----"); logger.error("-----error级别日志-----"); return JsonData.buildSuccess(); }@RequestMapping(path = "test2")public Object logTest2(){MDC.put("name","yangche"); MDC.put("age","25"); MDC.put("like","wujing"); logger.trace("-----trace级别日志-----"); logger.debug("-----debug级别日志-----"); logger.info("-----info级别日志-----"); logger.warn("-----warn级别日志-----"); logger.error("-----error级别日志-----"); logger.info(""); MDC.clear(); return JsonData.buildSuccess(); }}
写一个过滤器
package com.filter; import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.filter.Filter; import ch.qos.logback.core.spi.FilterReply; import org.springframework.util.StringUtils; public class SimpleLogFilter extends Filter{@Overridepublic FilterReply decide(ILoggingEvent event) {System.err.println(event.getMDCPropertyMap().get("name")); if(StringUtils.isEmpty(event.getMdc().get("name"))){return FilterReply.DENY; }else {return FilterReply.NEUTRAL; }}}
以上过滤器要继承Filter
%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n ERROR %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n log/app.err.%d.log 1 %X{name} %X{age} %X{like}-----%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n log/app.info.%d.log
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现
- Node.js中readline模块实现终端输入