本案例主要是实际开发中使用过滤器进行日志记录
pom.xml
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.1.1.RELEASE
com.cn.dl
springbootfilterdemo
0.0.1-SNAPSHOT
springbootfilterdemo
Demo project for Spring Boot
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
com.alibaba
fastjson
1.2.47
org.projectlombok
lombok
org.springframework.boot
spring-boot-maven-plugin
1、CommonConfig
package com.cn.dl.common;
/**
* Created by Tiger on 2018/10/29.
*/
public interface CommonConfig {
String START_TIME = "startTime";
String IP = "ip";
String CONSUME_TIME = "consumeTime";
String REQ_PATH = "reqPath";
String RES_BODY = "resBody";
String LOG_PREFIX = "logData==";
String TRACE_ID = "tarceId";
String LOG_TYPE = "logType";
String START = "start";
String END = "end";
String MODULE = "module";
String SESSION_ID = "sessionId";
String OPERATE_RESULT = "operateResult";
}
2、WebFilterDemo
package com.cn.dl.filter;
import com.cn.dl.common.CommonConfig;
import com.cn.dl.logtrace.LogTrace;
import org.jboss.logging.MDC;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
import java.util.UUID;
/**
* Created by yanshao on 2018/12/26.
*/
// TODO: 2018/12/26 如果不使用这个注解,可以用@Configuration中做一下配置
@WebFilter(urlPatterns = "/*")
public class WebFilterDemo implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("过滤器init>>>>>>>>>>>>>>>>>");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("过滤器doFilter>>>>>>>>>>>>>>>>>开始");
LogTrace logTrace = new LogTrace();
logTrace.generateTraceId();
logTrace.printPreLog(servletRequest);
filterChain.doFilter(servletRequest, servletResponse);
logTrace.printAfterLog(servletRequest);
System.out.println("过滤器doFilter>>>>>>>>>>>>>>>>>结束");
}
@Override
public void destroy() {
System.out.println("过滤器destroy>>>>>>>>>>>>>>>>>");
}
}
3、LogTrace
package com.cn.dl.logtrace;
import com.alibaba.fastjson.JSONObject;
import com.cn.dl.common.CommonConfig;
import com.cn.dl.utils.NetUtils;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerF