使用logback实现日志打印过滤

网友投稿 852 2022-12-24

使用logback实现日志打印过滤

使用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

上面有两个过滤器,

其中第一个过滤器是过滤掉所有包含字符串“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 {

@Override

public 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,在变量event中可以取到mdc的数据,msg,等等等等,可以用java对日志进行自定义的判断,过滤不需要的过滤器,对日志内容进行替换等等,随心所欲。

%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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:关于智能车载终端要不要拔掉的信息
下一篇:智能车载终端研究现状(智能车国内外研究现状)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~