做外汇模拟的网站做我女朋友好吗网站
2026/4/3 9:52:08 网站建设 项目流程
做外汇模拟的网站,做我女朋友好吗网站,汕头市建设网站,网站如何横屏一次服务调用#xff0c;在业务中可以一次追查到本次服务调用涉及的本地服务方法#xff0c;第三方服务接口。实现日志的链路追踪。保证日志的高查找性。实现步骤1、pom.xml 依赖复制代码dependenciesdependencygroupIdorg.springframework.boot…一次服务调用在业务中可以一次追查到本次服务调用涉及的本地服务方法第三方服务接口。实现日志的链路追踪。保证日志的高查找性。实现步骤1、pom.xml 依赖复制代码dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-logging/artifactId/dependency!--lombok配置--dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.16.10/version/dependency/dependencies复制代码2、整合logback打印日志logback.xml (日志配置文件)关键代码[traceId:%X{traceId}]traceId是通过拦截器里MDC.put(traceId, tid)添加。复制代码?xml version1.0 encodingUTF-8?configuration debugfalse!--日志存储路径--property namelog valueD:/test/log /!-- 控制台输出 --appender nameconsole classch.qos.logback.core.ConsoleAppenderencoder classch.qos.logback.classic.encoder.PatternLayoutEncoder!--输出格式化--pattern[traceId:%X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n/pattern/encoder/appender!-- 按天生成日志文件 --appender namefile classch.qos.logback.core.rolling.RollingFileAppenderrollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy!--日志文件名--FileNamePattern${log}/%d{yyyy-MM-dd}.log/FileNamePattern!--保留天数--MaxHistory30/MaxHistory/rollingPolicyencoder classch.qos.logback.classic.encoder.PatternLayoutEncoderpattern[traceId:%X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n/pattern/encoder!--日志文件最大的大小--triggeringPolicy classch.qos.logback.core.rolling.SizeBasedTriggeringPolicyMaxFileSize10MB/MaxFileSize/triggeringPolicy/appender!-- 日志输出级别 --root levelINFOappender-ref refconsole /appender-ref reffile //root/configuration复制代码3、application.yml指定logback.xml配置目录logging:config: classpath:logback.xml4、异步线程的跟踪ID链路追踪业务逻辑是基于线程数据的传递进行处理主线程传递线程ID到子线程。处理方式重写线程池的execute*、submit*方法。复制代码public final class MyThreadPoolTaskExecutor extends ThreadPoolTaskExecutor {public MyThreadPoolTaskExecutor() {super();}Overridepublic void execute(Runnable task) {super.execute(TraceIdUtil.wrap(task, MDC.getCopyOfContextMap()));}Overridepublic T FutureT submit(CallableT task) {return super.submit(TraceIdUtil.wrap(task, MDC.getCopyOfContextMap()));}Overridepublic 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()) {Overrideprotected void beforeExecute(Thread thread, Runnable runnable) {super.beforeExecute(thread, runnable);// 为定时任务生成一个 traceIdTraceIdUtil.setTraceId();// 可选添加任务标识System.out.println(Scheduled task starting with traceId: TraceIdUtil.getTraceId());}Overrideprotected void afterExecute(Runnable r, Throwable t) {super.afterExecute(r, t);Threads.printException(r, t);TraceIdUtil.remove();}};}复制代码

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询