基于logback添加唯一追踪ID

1、添加过滤器LogbackFilter

package com.myself.ssmTest.web.filter;

import org.slf4j.MDC;

import javax.servlet.*;
import java.io.IOException;
import java.util.UUID;

/**
 * 增加输出日志traceRootId
 */
public class LogbackFilter implements Filter {

	private static final String UNIQUE_ID = "traceRootId";

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

	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
						 FilterChain chain) throws IOException, ServletException {
		boolean bInsertMDC = insertMDC();
		try {
			chain.doFilter(request, response);
		} finally {
			if(bInsertMDC) {
				MDC.remove(UNIQUE_ID);
			}
		}
	}

	private boolean insertMDC() {
		UUID uuid = UUID.randomUUID();
		String uniqueId = UNIQUE_ID +"-"+ uuid.toString().replace("-", "");
		MDC.put(UNIQUE_ID, uniqueId);
		return true;
	}

	@Override
	public void destroy() {

	}

}

2、在src\main\webapp\WEB-INF\web.xml文件的加上过滤器的配置

  
    logbackFilter
    com.yz.rainbowbridgewebcenter.filter.LogbackFilter
  
  
    logbackFilter
    /*
  

3、在logback.xml文件中的每一个标签下的中都加上traceRootId,

我的配置文件是这么添加的(红色字体):%d [%t] %-5p %c{2} [%X{traceRootId}] - [%m]%n,全部 如配置下图(仅供参考):



    
    
    
    
        
            ${log.home}/default/common-default.log.%d{yyyyMMdd}
            30
        
        
            %d [%t] %-5p %c{2} [%X{traceRootId}] - [%m]%n
        
    
    
    
        
            ${log.home}/error/common-error.log.%d{yyyyMMdd}
        
        
            %d [%t] %-5p %c{2} [%X{traceRootId}] - [%m]%n
        
        
            ERROR
        
    
    
    
        
            ${log.home}/perf/common-perf.log.%d{yyyyMMdd}
            30
        
        
            %d [%t] %-5p %c{2} [%X{traceRootId}] - [%m]%n
        
    
    
    
        
            ${log.home}/dao/common-dao.log.%d{yyyyMMdd}
            30
        
        
            %d [%t] %-5p %c{2} [%X{traceRootId}] - [%m]%n
        
    
    
    
        
            ${log.home}/service/common-service.log.%d{yyyyMMdd}
            30
        
        
            %d [%t] %-5p %c{2} [%X{traceRootId}] - [%m]%n
        
    
    
    
        
            ${log.home}/business/common-business.log.%d{yyyyMMdd}
            30
        
        
            %d [%t] %-5p %c{2} [%X{traceRootId}] - [%m]%n
        
    
    
    
        
            ${log.home}/web/common-web.log.%d{yyyyMMdd}
            30
        
        
            %d [%t] %-5p %c{2} [%X{traceRootId}] - [%m]%n
        
    
    
    
        
            ${log.home}/alarm/common-alarm.log.%d{yyyyMMdd}
            30
        
        
            %d [%t] %-5p %c{2} [%X{traceRootId}] - [%m]%n
        
    
    
    
        
            ${log.home}/trace/tracing.log.%d{yyyy-MM-dd-HH}.gz
            72
        
        
            %d - [%m]%n
        
    
    
    
    
    
        
        
        
    
        
        
        
        
    
     
        
        
        
    
     
        
        
        
    
     
        
        
        
    
    
    	
    	
    
   
    
        
        
        
    
    
    
        
        
        
    
    
    
    
    
    
    
    
        
        
    
    
    
        
        
    
 

相关文章:
logback的搭建与使用-maven项目:https://blog.csdn.net/qq_25646191/article/details/81004513


你可能感兴趣的:(log)