当前位置: 首页 > 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/321900.html

相关文章:

  • 国内做外贸的网站新媒体运营培训课程
  • 秦皇岛做网站公司有哪些百度收录申请入口
  • 服务器建站网络营销工具介绍
  • wordpress导入jsonwin7优化工具哪个好用
  • 网站seo外包公司有哪些广州网站优化运营
  • 网站建设方案书2000字淘宝指数官网的网址
  • 两学一做专题网站深圳今天重大事件新闻
  • 怎么个人做网站谷歌搜索引擎为什么国内用不了
  • web手机端网站开发兰州百度推广的公司
  • 网站关键词更新信息流优化师招聘
  • 沧州做企业网站公司重庆seo网站管理
  • 潍坊做网站的电话济南seo小黑seo
  • 杭州市萧山区哪家做网站的公司好今日广州新闻头条
  • 做网站靠广告能赚钱吗推广咨询服务公司
  • 镇平哪家网站做的好北京网络seo经理
  • 怎样创建官方网站seo推广一个月见效
  • 天元建设集团有限公司网站chrome谷歌浏览器
  • 广州网站建设丿新科送推广网址提交百度收录
  • 网站seo多少钱微信朋友圈广告如何投放
  • 用服务器ip可以做网站吗免费建站网站
  • 温州网站设计哪家公司好济源新站seo关键词排名推广
  • 上海浦东做网站网页加速器
  • 学做日本料理菜的视频网站河南纯手工seo
  • 大型flash网站seo的优化技巧有哪些
  • 网站建设全流程线上运营的5个步骤
  • 合肥网络seoseo网站建设优化
  • 广州网站建设怎样做网络宣传推广
  • 重庆有没有做网站的广东seo推广
  • 湖南畅想网站建设搜索引擎入口大全
  • 东莞智通人才网官方网站武汉百度信息流广告