当前位置: 首页 > news >正文

六安网站制作金狮360免费建站怎么样

六安网站制作金狮,360免费建站怎么样,网站制作 昆明,网站建设和运行管理办法在 Logback 日志框架中加入链路 ID,能有效将同一条链路的日志串联起来,便于追踪和排查问题。 1. 生成和管理链路 ID 要保证在整个请求链路里都能获取到链路 ID,可借助 ThreadLocal 来实现。以下是一个简单的工具类示例: import…

在 Logback 日志框架中加入链路 ID,能有效将同一条链路的日志串联起来,便于追踪和排查问题。

1. 生成和管理链路 ID

要保证在整个请求链路里都能获取到链路 ID,可借助 ThreadLocal 来实现。以下是一个简单的工具类示例:

import java.util.UUID;public class TraceIdUtil {private static final ThreadLocal<String> traceIdHolder = new ThreadLocal<>();// 生成链路 IDpublic static String generateTraceId() {String traceId = UUID.randomUUID().toString();traceIdHolder.set(traceId);return traceId;}// 获取链路 IDpublic static String getTraceId() {return traceIdHolder.get();}// 清除链路 IDpublic static void clearTraceId() {traceIdHolder.remove();}
}

2. 在请求入口生成链路 ID

可使用拦截器、过滤器或者 AOP 来在请求进入时生成链路 ID。这里以拦截器为例:

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class TraceIdInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 生成链路 IDString traceId = TraceIdUtil.generateTraceId();// 可将链路 ID 放入响应头,方便下游服务获取response.setHeader("Trace-Id", traceId);return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {// 请求处理完成后清除链路 IDTraceIdUtil.clearTraceId();}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {// 请求完成后再次清除链路 ID,确保不会有残留TraceIdUtil.clearTraceId();}
}

同时,要在 Spring Boot 中配置该拦截器:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new TraceIdInterceptor()).addPathPatterns("/**"); // 拦截所有请求}
}

3. 配置 Logback 日志格式

logback.xml 配置文件里,使用 %X{traceId} 来获取并展示链路 ID。示例配置如下:

<configuration><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><!-- 配置日志输出格式,加入链路 ID --><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{traceId}] %-5level %logger{36} - %msg%n</pattern></encoder></appender><root level="info"><appender-ref ref="CONSOLE" /></root>
</configuration>

在上述配置中,%X{traceId} 用于输出存储在 MDC(Mapped Diagnostic Context)中的链路 ID。

4. 在代码中使用 MDC 存储链路 ID

在生成链路 ID 后,要把它存储到 MDC 中,这样 Logback 才能正确获取。可在拦截器中添加如下代码:

import org.slf4j.MDC;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class TraceIdInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 生成链路 IDString traceId = TraceIdUtil.generateTraceId();// 将链路 ID 存入 MDCMDC.put("traceId", traceId);// 可将链路 ID 放入响应头,方便下游服务获取response.setHeader("Trace-Id", traceId);return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {// 请求处理完成后清除 MDC 中的链路 IDMDC.remove("traceId");// 请求处理完成后清除链路 IDTraceIdUtil.clearTraceId();}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {// 请求完成后再次清除 MDC 中的链路 ID,确保不会有残留MDC.remove("traceId");// 请求完成后再次清除链路 ID,确保不会有残留TraceIdUtil.clearTraceId();}
}

通过以上步骤,就能在 Logback 日志框架中加入链路 ID,使每条日志都包含对应的链路 ID,方便进行链路追踪和问题排查。

在这里插入图片描述

http://www.dtcms.com/a/595840.html

相关文章:

  • 网站首页制作案例现在从深圳回来需要隔离吗?
  • 海南省建设工程执业中心网站h5制作多少钱
  • 网站建设合同2018广州网站设计公司新闻
  • 网站开启微信支付功能网络营销推广怎么做
  • 公司建设网站的请示什么公司做的网站好
  • 广州网站建设招聘网站没有收录了
  • 建设网站费用要进固定资产吗浏览有关小城镇建设的网站6
  • 企业网站模板源代码下载做网站需要材料
  • 销售网站怎么做免费个人网站模版ps
  • 网站视频做参考文献小程序代理需要多少钱
  • 北京高端网站建设系统中小型网站建设价位
  • 鼠标放上去图片放大的网站住房和城乡建设部网站登录
  • 网站提交入口百度江门外贸网站建设
  • wordpress该站点地址王磊网站建设
  • 如何找网站做推广手机python编程软件
  • 网站建设大学网站 优化 教程
  • 百度制作网站千库网下载
  • 百度seo整站优化公司网站能不能自己做
  • 移动端网站一般宽做多大什么网站可以免费发布招聘信息
  • 网站浏览构思前台网站建设
  • 博客网站代码江苏省建设厅政务网站
  • 只做域名跳转和关停网站备案号链接工信部网站
  • 建设网站用什么服务器百度地图人工电话
  • dedecms一键更新网站求职网站开发
  • 福田网站建设龙岗网站建设罗湖网站建设竞价服务托管公司
  • 导购网站怎么做的南宁开发公司
  • 霞浦建设局网站山西汽车网站建设
  • 打开陕西建设厅网站精品网站设计
  • 网站百度推广怎么做网络营销推广步骤
  • 免费凡科网站html转换器