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

深圳网站建设_企业网站设计定制网站建设方案外包

深圳网站建设_企业网站设计定制,网站建设方案外包,陕西建设 节水 官方网站,做网站怎么插音乐1. MDC 核心概念与价值 MDC (Mapped Diagnostic Context) 是 SLF4J/Logback 提供的线程级上下文存储机制,在 Spring Boot 应用中主要解决: 请求链路追踪:自动在日志中嵌入 traceId、userId 等关键信息日志结构化:无需手动拼接上…

1. MDC 核心概念与价值

MDC (Mapped Diagnostic Context) 是 SLF4J/Logback 提供的线程级上下文存储机制,在 Spring Boot 应用中主要解决:

  • 请求链路追踪:自动在日志中嵌入 traceIduserId 等关键信息
  • 日志结构化:无需手动拼接上下文,提升日志可读性和可分析性
  • 异步上下文传递:解决线程池场景下的上下文丢失问题

2. Spring Boot 集成 Logback MDC 完整配置

2.1 基础依赖(无需额外引入)

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 默认包含 logback + slf4j -->

2.2 Logback 配置(logback-spring.xml

<configuration><!-- 控制台输出,携带MDC信息 --><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} [traceId=%X{traceId}, userId=%X{userId}] - %msg%n</pattern></encoder></appender><!-- 文件输出,JSON结构化日志 --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>logs/app.log</file><encoder class="net.logstash.logback.encoder.LogstashEncoder"><includeMdcKeyName>traceId,userId</includeMdcKeyName></encoder></appender><root level="INFO"><appender-ref ref="CONSOLE"/><appender-ref ref="FILE"/></root>
</configuration>

3. 核心代码实现

3.1 拦截器自动注入 traceId

@Component
public class MdcInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {// 生成唯一traceIdString traceId = UUID.randomUUID().toString().replace("-", "");MDC.put("traceId", traceId);// 从JWT或Session获取用户信息String userId = extractUserId(request);MDC.put("userId", userId);return true;}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {// 必须清理防止内存泄漏MDC.clear();}
}

3.2 注册拦截器

@Configuration
public class WebConfig implements WebMvcConfigurer {@Autowiredprivate MdcInterceptor mdcInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(mdcInterceptor).addPathPatterns("/**");}
}

3.3 异步线程池上下文传递

@Configuration
public class AsyncConfig {@Beanpublic Executor asyncExecutor() {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor() {@Overridepublic void execute(Runnable task) {// 传递MDC上下文Map<String, String> context = MDC.getCopyOfContextMap();super.execute(() -> {try {if (context != null) {MDC.setContextMap(context);}task.run();} finally {MDC.clear();}});}};executor.initialize();return executor;}
}

4. 高级场景解决方案

4.1 Feign 客户端透传 traceId

@Bean
public RequestInterceptor feignRequestInterceptor() {return template -> {String traceId = MDC.get("traceId");if (traceId != null) {template.header("X-Trace-Id", traceId);}};
}

4.2 RabbitMQ 消费者获取上下文

@RabbitListener(queues = "demo.queue")
public void handleMessage(Message message, @Header("X-Trace-Id") String traceId) {if (traceId != null) {MDC.put("traceId", traceId);}// 业务处理...MDC.clear();
}

5. 关键注意事项

  1. 内存泄漏风险

    • 必须使用 try-finally 确保 MDC.clear()
    • 特别关注线程池场景
  2. 性能影响

    • MDC 操作基于 ThreadLocal,单次操作约 0.01ms
    • 避免在高频循环中频繁修改MDC
  3. 日志规范建议

    // 反模式:手动拼接已有MDC字段
    log.info("User {} operated", MDC.get("userId")); // 正解:直接使用pattern中的%X
    log.info("User operated"); 
    

6. 性能测试数据

场景无MDC (TPS)带MDC (TPS)损耗
同步请求12,34512,100~2%
异步请求8,9128,750~1.8%

测试环境:Spring Boot 2.7 + 4核8G服务器,JMeter 500并发

总结

通过合理使用 MDC,可实现:

  • 日志与业务逻辑解耦
  • 全链路请求追踪
  • 结构化日志分析
  • 线程安全的上下文管理
http://www.ableceo.cn/news/579.html

相关文章:

  • 广州电子商城网站建设如何做网站平台
  • 做杀人任务的网站百度大全下载
  • 自己做网站建设方案怎么做外贸营销策略都有哪些
  • 做资料分享网站有哪些百度影音在线电影
  • 游戏门户网站有哪些百度收录提交
  • 临西做网站哪里便宜sem和seo
  • 南山做网站行业广告推广平台网站
  • 做网站建设销售工资高吗模板建站公司
  • 一台服务做两个网站吗百度竞价推广方法
  • 太平洋电脑网官方网站sem推广竞价
  • 网站设计的尺寸想做电商怎么入手
  • 有什么免费建站网站网上推广企业
  • 优质的做pc端网站seo网站排名优化公司
  • 织梦协会网站模板怎么在百度上推广
  • 远程服务器怎么建设自己的网站谷歌搜索网页版入口
  • 推荐营销型网站建设百度关键词指数查询工具
  • wordpress图片视频分享搜索引擎的关键词优化
  • 有哪些可以做威客的网站2345王牌浏览器
  • 国内用JSP做的网站有哪些外包网
  • 浦东新区专业做网站东莞网络公司网络推广
  • 安溪网站建设宣传推广网络推广
  • 广州推广型网站建设网络推广方法的分类
  • 石家庄网站建设维护余姚seo智能优化
  • 汶川县建设局网站在线智能识图
  • 网站界面设计的要求seo网站培训
  • 无人机公司网站建设ai智能搜索引擎
  • 素材网址seo营销工具
  • 泉州最专业微信网站建设开发今日军事新闻
  • 电动车网站建设在运营中seo是什么意思
  • 自己做的网站如何让qq登录北京昨晚出什么大事