logback-MDC日志唯一標識


自定義LogbackFilter:

import org.slf4j.MDC;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
import java.util.UUID;

@WebFilter(filterName = "logbackFilter", urlPatterns = "/*")
public class LogbackFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        UUID uuid = UUID.randomUUID();
        MDC.put("wtraceid", uuid.toString().replace("-",""));
        try {
            filterChain.doFilter(servletRequest,servletResponse);
        }finally {
            MDC.remove("wtraceid");//保證一次請求一個唯一標識
        }
    }

    @Override
    public void destroy() {
    }
}

logback.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] WTraceId[%X{wtraceid}] [%highlight(%5p)] %msg%n</pattern>
<charset>utf8</charset>
</encoder>
</appender>

<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
</configuration>

tips:

1,自定義 LogbackFilter 需要實現 Filter

springboot方式需要在 LogbackFilter 類加上@WebFilter(filterName = "logbackFilter", urlPatterns = "/*")注解

啟動類 ApplicationBootstrap 加上@ServletComponentScan注解

2,WTraceId[%cyan(%X{wtraceid})] 自定義wtraceid的顏色


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM