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

【原创】说说JSON和JSONP,也许你会豁然开朗,含jQuery用例

牙瞪旁障1、pom.xml 依赖

复制代码

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-starter-logging

org.projectlombok

lombok

1.16.10

复制代码

2、整合logback,打印日志,logback.xml (日志配置文件)

关键代码:[traceId:%X{traceId}],traceId是通过拦截器里MDC.put(traceId, tid)添加。

复制代码

[traceId:%X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n

${log}/%d{yyyy-MM-dd}.log

30

[traceId:%X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n

10MB

复制代码

3、application.yml指定logback.xml配置目录

logging:

config: classpath:logback.xml

4、异步线程的跟踪ID链路追踪

业务逻辑是基于线程数据的传递进行处理,主线程传递线程ID到子线程。处理方式:重写线程池的execute(*)、submit(*)方法。

复制代码

public final class MyThreadPoolTaskExecutor extends ThreadPoolTaskExecutor {

public MyThreadPoolTaskExecutor() {

super();

}

@Override

public void execute(Runnable task) {

super.execute(TraceIdUtil.wrap(task, MDC.getCopyOfContextMap()));

}

@Override

public Future submit(Callable task) {

return super.submit(TraceIdUtil.wrap(task, MDC.getCopyOfContextMap()));

}

@Override

public Future submit(Runnable task) {

return super.submit(TraceIdUtil.wrap(task, MDC.getCopyOfContextMap()));

}

}

复制代码

4、异步定时任务线程接口ScheduledExecutorService的日志链路追踪。在执行前,执行后进行跟踪ID的生成和删除。

复制代码

@Bean(name = "scheduledExecutorService")

protected ScheduledExecutorService scheduledExecutorService() {

return new ScheduledThreadPoolExecutor(corePoolSize,

new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build(),

new ThreadPoolExecutor.CallerRunsPolicy()) {

@Override

protected void beforeExecute(Thread thread, Runnable runnable) {

super.beforeExecute(thread, runnable);

// 为定时任务生成一个 traceId

TraceIdUtil.setTraceId();

// 可选:添加任务标识

System.out.println("Scheduled task starting with traceId: " + TraceIdUtil.getTraceId());

}

@Override

protected void afterExecute(Runnable r, Throwable t) {

super.afterExecute(r, t);

Threads.printException(r, t);

TraceIdUtil.remove();

}

};

}

http://www.jsqmd.com/news/449955/

相关文章:

  • 2026年北京离婚房产律师电话查询推荐:高效解决房产分割难题 - 品牌推荐
  • APUE笔记:Daemon Processes(十三) - Invinc
  • 选择HttpHandler还是HttpModule?
  • 截止到26年03月当前主流的几款简历工具汇总
  • 计算机毕业设计springboot儿童教育管理系统 基于SpringBoot的少儿培训机构综合运营服务平台 SpringBoot驱动的早期教育数字化管理与家校互动系统
  • 闲谈.Net类型之public的不public,fixed的不能fixed
  • 如何设计一门语言(三)——什么是坑(面向对象和异常处理)
  • 高升搬家电话查询:获取官方联系方式的途径 - 品牌推荐
  • 细说ASP.NET Forms身份认证
  • C# 温故而知新:Stream篇(五)
  • 盘点市场主流蘑菇石厂家:品质与设计谁更优?冰裂纹/碎拼石/脚踏石/石材/天然石/文化石/地铺石,蘑菇石品牌推荐排行榜 - 品牌推荐师
  • ,写给岁的自己
  • c#中的浮点型转整形的舍取-四舍五入和银行家舍入
  • 江苏2026年3D微针植发医院盘点,服务体验不错,美学植发/发际线调整/5C美学种植/微针植发,3D微针植发医院推荐哪些 - 品牌推荐师
  • async 与 await 在 Web 下的应用
  • vs2022 远程调试报错:找不到网络名、未知的生成错误“用户名或密码不正确
  • 技术文章是怎样炼成的?
  • How ASP.NET MVC Works?[持续更新中…]
  • 从性能的角度谈SQL Server聚集索引键的选择
  • Computer Vision 顶级学习地图
  • C#综合揭秘——细说进程、应用程序域与上下文之间的关系
  • 哪里是乐土?--关于团队良性循环
  • 2026年北京离婚房产律师电话查询推荐:专业团队服务汇总 - 品牌推荐
  • 2026年中国离婚财产分割律师电话查询推荐:高效联系与沟通要点 - 品牌推荐
  • 使用分页方式读取超大文件的性能试验
  • C# 温故而知新:Stream篇(二)
  • 京东e卡快速回收攻略:如何在几分钟内轻松变现? - 团团收购物卡回收
  • 2026年北京婚内财产协议律师电话查询推荐:专业服务与联系指引 - 品牌推荐
  • 【前端应该知道的那些事儿】运动学基础
  • Ajax与JSON的一些总结