java: configurar la identificación de registro global

fondo:

        Recientemente construí ELK y descubrí que los registros del proyecto originales no tenían una ID global para ubicar cada solicitud, por lo que quería configurar una ID de registro global y rastrear el enlace de la ID de registro para cada solicitud.

Configuración:

        El principio fundamental es muy simple, es decir, antes de que cada solicitud ingrese al controlador, la solicitud se intercepta, se agrega un traceId al contexto (generalmente se genera uno aleatorio usando uuid) y luego este traceId se agrega a la configuración del registro. Imprímelo para que todos los registros relacionados con esta solicitud tengan este ID de registro global y podamos realizar análisis y revisión del código.

        yo uso filtro

package com.zzkj.web.filter;

import ch.qos.logback.classic.helpers.MDCInsertingServletFilter;
import com.zzkj.common.utils.StringUtils;
import org.slf4j.MDC;

import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.UUID;

@WebFilter(filterName = "LogFilter",urlPatterns = "/*")
public class LogFilter extends MDCInsertingServletFilter {
   private String traceIdKey = "traceId";

   public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
       if (request instanceof HttpServletRequest) {
           //先看请求头有没有traceId参数,有就用请求头带的,这样的目的是可以实现分布式上下流的日志id统一跟踪
           String traceId = ((HttpServletRequest) request).getHeader(traceIdKey);
           if (StringUtils.isEmpty(traceId)) {
                //随机生成日志id
                traceId = UUID.randomUUID().toString().replaceAll("-","");
           }
           MDC.put(traceIdKey, traceId);
           try {
               super.doFilter(request, response, chain);
           } finally {
               //请求完成后移除
               MDC.remove(traceIdKey);
           }
       }
   }
}

        En el archivo de configuración del registro, modifique el formato de salida del registro y agregue traceId a la salida.

<!-- 日志输出格式 -->
	<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread]-[%X{traceId}] %-5level %logger{20} - [%method,%line] - %msg%n" />

Efecto:

        

 Finalizar

Supongo que te gusta

Origin blog.csdn.net/DGH2430284817/article/details/130524020
Recomendado
Clasificación