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

网站建设建设公司哪家好搜索大全引擎地址

网站建设建设公司哪家好,搜索大全引擎地址,怎么免费建商城网站吗,做服务网站发展背景一、什么是MDC? MDC(Mapped Diagnostic Context)是SLF4J提供的一个线程安全的诊断上下文工具。它允许开发者在同一线程上下文中存储多个键值对信息,这些信息可以自动附加到日志输出中,实现日志的上下文关联。 二、MDC…

一、什么是MDC?

MDC(Mapped Diagnostic Context)是SLF4J提供的一个线程安全的诊断上下文工具。它允许开发者在同一线程上下文中存储多个键值对信息,这些信息可以自动附加到日志输出中,实现日志的上下文关联


二、MDC的核心作用

作用说明典型场景
链路追踪跟踪请求完整处理流程分布式系统调用跟踪
上下文传递跨方法传递公共参数用户ID、机构号等透传
日志增强自动添加公共字段到日志请求IP、设备号等记录
问题排查快速定位特定请求的日志生产环境问题诊断

三、MDC的五大典型使用场景

  1. 分布式跟踪:传递TraceID实现全链路追踪
  2. 用户行为分析:记录用户ID、操作类型等信息
  3. API请求跟踪:关联请求参数与响应结果
  4. 异步任务处理:跨线程传递上下文信息
  5. 安全审计:记录操作者身份信息

四、Spring Boot集成MDC实战

4.1 添加依赖(pom.xml)

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId>
</dependency>

4.2 配置日志格式(logback-spring.xml)

<configuration><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] [%X{traceId}] %-5level %logger{36} - %msg%n</pattern></encoder></appender><root level="INFO"><appender-ref ref="STDOUT" /></root>
</configuration>

4.3 实现拦截器自动设置TraceID

@Component
public class TraceInterceptor implements HandlerInterceptor {private static final String TRACE_ID = "traceId";@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {MDC.put(TRACE_ID, UUID.randomUUID().toString());return true;}@Overridepublic void afterCompletion(HttpServletRequest request,HttpServletResponse response,Object handler, Exception ex) {MDC.remove(TRACE_ID);}
}// 注册拦截器
@Configuration
public class WebConfig implements WebMvcConfigurer {@Autowiredprivate TraceInterceptor traceInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(traceInterceptor).addPathPatterns("/**");}
}

4.4 控制器中使用示例

@RestController
@Slf4j
public class UserController {@GetMapping("/users/{id}")public User getUser(@PathVariable Long id) {log.info("查询用户信息,用户ID: {}", id);// 业务逻辑...return userService.getUser(id);}
}

日志输出

2023-08-20 14:30:45 [http-nio-8080-exec-1] [a1b2c3d4-e5f6-7890] INFO  com.example.UserController - 查询用户信息,用户ID: 1001

五、进阶使用技巧

5.1 线程池场景处理

public class MDCThreadPool extends ThreadPoolExecutor {public MDCThreadPool(int corePoolSize, int maxPoolSize) {super(corePoolSize, maxPoolSize, 60L, TimeUnit.SECONDS,new LinkedBlockingQueue<>(500),new MDCThreadFactory());}@Overridepublic void execute(Runnable task) {super.execute(wrap(task, MDC.getCopyOfContextMap()));}private Runnable wrap(Runnable task, Map<String, String> context) {return () -> {if (context != null) {MDC.setContextMap(context);}try {task.run();} finally {MDC.clear();}};}
}// 使用示例
private Executor executor = new MDCThreadPool(5, 10);public void asyncProcess() {executor.execute(() -> {log.info("异步任务执行"); // 自动携带traceId});
}

5.2 自定义业务字段

public class UserContext {private static final String USER_ID = "userId";public static void setUserId(String userId) {MDC.put(USER_ID, userId);}public static String getUserId() {return MDC.get(USER_ID);}public static void clear() {MDC.remove(USER_ID);}
}// 在认证拦截器中设置
UserContext.setUserId(currentUser.getId());

六、生产环境注意事项

  1. 内存泄漏预防:务必在finally块中清除MDC
  2. 线程池适配:自定义线程池需手动传递上下文
  3. 性能影响:避免存储过大对象(仅存储ID类信息)
  4. 安全考虑:不要存储敏感信息(密码、token等)

七、MDC的局限性及替代方案

方案优势适用场景
MDC轻量简单、与日志框架集成好单应用链路追踪
ThreadLocal更灵活的数据结构复杂上下文管理
Sleuth分布式系统全链路追踪Spring Cloud微服务架构
OpenTelemetry云原生标准、多语言支持跨语言分布式系统

扩展阅读

  • SLF4J MDC官方文档
  • Spring Cloud Sleuth源码解析
  • OpenTelemetry追踪规范

掌握MDC的使用技巧,让您的日志系统成为排查问题的"火眼金睛"! 🔍

http://www.dtcms.com/wzjs/453056.html

相关文章:

  • 做网站美工百度一下全知道
  • 溧阳做网站哪家好百度一下你就知道 官网
  • 在国外网站付款要怎么做宁波网站优化公司哪家好
  • 用模板搭建的网站备案吗网站后台管理系统
  • 免费ppt模板资源宁波seo网络推广软件系统
  • 关于政府网站建设推进落实情况什么是白帽seo
  • 有没有做翻译赚钱的网站怎么学seo基础
  • 大连网站建设方案维护郑州seo排名哪有
  • wordpress定时器东莞网站优化公司哪家好
  • 做的网站百度找不到了搜索推广渠道有哪些
  • 外国人爱做视频网站企业互联网推广
  • 全球50个大网站开发语言ue5培训机构哪家强
  • 做面点的网站哪个平台可以免费打广告
  • 延吉网站制作南宁seo推广服务
  • 国外成人做视频网站有哪些网盟推广平台
  • 中山市建设信息网站站长推广工具
  • 上海网站制作顾品牌营销
  • 网站建设优化服务精英重庆seo1
  • 打扑克软件直播app开发魔贝课凡seo
  • 个体户做网站是怎么备案北京优化靠谱的公司
  • 平面设计软件学哪个比较好南昌seo网站推广
  • 福州mip网站建设seo智能优化软件
  • 商丘市做1企业网站的公司seo关键词排名优化推荐
  • 简单的网页开发整站优化系统厂家
  • 杭州 城西 做网站北京网站营销与推广
  • 网站开发怎样实现上传视频教程网店代运营和推广销售
  • 网站安全架构上海seo怎么优化
  • 南宁公司建站模板网络推广最好的网站有哪些
  • 徐州企业网站建设公司纯注册app拉新挣钱
  • 北京网站建设公司华网数字营销包括哪六种方式