导航网站能个人备案,做原创音乐的网站,牛商网网站做seo好么,wordpress怎样更改文章阅读次数文章目录 前言一、准备1. 引入依赖 二、日志配置1. 打印追踪ID2. gRPC 导出 三、完整日志配置四、日志展示1. 前端2. 后端 总结 前言
前面已经完成了请求的链路追踪#xff0c;这里我们通过SkyWalking来处理分布式日志#xff1b;
场景描述#xff1a;我们有三个服务消费者… 文章目录 前言一、准备1. 引入依赖 二、日志配置1. 打印追踪ID2. gRPC 导出 三、完整日志配置四、日志展示1. 前端2. 后端 总结 前言
前面已经完成了请求的链路追踪这里我们通过SkyWalking来处理分布式日志
场景描述我们有三个服务消费者提供者和用户服务三个服务都有自己的日志文件但是我一个请求会贯穿三个服务不能说我一个服务的日志文件挨个去找这太麻烦了如果有更多的服务呢这时候代价会更大
SkyWalking为我们解决了这个问题每当请求进来的时候会生成一个追踪ID(TID) 一、准备
1. 引入依赖 我们首先引入skywalking整合logback的工具包 !-- https://mvnrepository.com/artifact/org.apache.skywalking/apm-toolkit-logback-1.x --
dependencygroupIdorg.apache.skywalking/groupIdartifactIdapm-toolkit-logback-1.x/artifactIdversion9.3.0/version
/dependency 二、日志配置 以下内容基于logback-spring.xml日志配置文件 1. 打印追踪ID
property nameCONSOLE_PATTERN value${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr([%tid]) %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(%applicationName[%15.15t]){faint} %clr(${LOG_CORRELATION_PATTERN:-}){faint}%clr(%-40.40logger{39}:%L) %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}/appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderfilter classch.qos.logback.classic.filter.ThresholdFilterlevel${CONSOLE_LOG_THRESHOLD}/level/filterencoder classch.qos.logback.core.encoder.LayoutWrappingEncoderlayout classorg.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayoutPattern${CONSOLE_PATTERN}/Patterncharset${CONSOLE_LOG_CHARSET}/charset/layout/encoder
/appenderroot levelDEBUGappender-ref refCONSOLE/
/root主要是[%tid]
2. gRPC 导出
appender nameGRPC-LOG classorg.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppenderencoder classch.qos.logback.core.encoder.LayoutWrappingEncoderlayout classorg.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayoutPattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%applicationName[%15.15t]] [%thread] %-5level %logger{36} -%msg%n/Pattern/layout/encoder
/appenderroot levelDEBUGappender-ref refGRPC-LOG/
/root三、完整日志配置
?xml version1.0 encodingUTF-8?
configuration!-- 引入Spring Boot的默认logback配置 --property nameCONSOLE_PATTERN value${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr([%tid]) %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(%applicationName[%15.15t]){faint} %clr(${LOG_CORRELATION_PATTERN:-}){faint}%clr(%-40.40logger{39}:%L) %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}/property nameFILE_PATTERN value${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } %applicationName[%t] ${LOG_CORRELATION_PATTERN:-}%-40.40logger{39}:%L : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}/include resourceorg/springframework/boot/logging/logback/defaults.xml/!-- 自定义控制台输出模板 --property nameLOG_HOME value../logs/consumer//property nameLOG_FILE valueconsumer/property nameLOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START valuefalse/property nameLOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE value10MB/property nameLOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP value0/property nameLOGBACK_ROLLINGPOLICY_MAX_HISTORY value7/appender nameGRPC-LOG classorg.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppenderencoder classch.qos.logback.core.encoder.LayoutWrappingEncoderlayout classorg.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayoutPattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%applicationName[%15.15t]] [%thread] %-5level %logger{36} -%msg%n/Pattern/layout/encoder/appenderappender nameCONSOLE classch.qos.logback.core.ConsoleAppenderfilter classch.qos.logback.classic.filter.ThresholdFilterlevel${CONSOLE_LOG_THRESHOLD}/level/filterencoder classch.qos.logback.core.encoder.LayoutWrappingEncoderlayout classorg.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayoutPattern${CONSOLE_PATTERN}/Patterncharset${CONSOLE_LOG_CHARSET}/charset/layout/encoder/appenderappender nameDEBUG_FILE classch.qos.logback.core.rolling.RollingFileAppenderfilter classch.qos.logback.classic.filter.ThresholdFilterlevelDEBUG/level/filterencoderpattern${FILE_PATTERN}/patterncharset${FILE_LOG_CHARSET}/charset/encoderfile${LOG_HOME}${LOG_FILE}_debug.log/file!--大小和时间基于滚动策略--rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicyfileNamePattern${LOG_HOME}${LOG_FILE}_debug.%d{yyyy-MM-dd}.%i.gz/fileNamePatterncleanHistoryOnStart${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}/cleanHistoryOnStartmaxFileSize${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB}/maxFileSizetotalSizeCap${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0}/totalSizeCapmaxHistory${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-7}/maxHistory/rollingPolicy/appenderappender nameINFO_FILE classch.qos.logback.core.rolling.RollingFileAppenderfilter classch.qos.logback.classic.filter.ThresholdFilterlevelINFO/level/filterencoderpattern${FILE_PATTERN}/patterncharset${FILE_LOG_CHARSET}/charset/encoderfile${LOG_HOME}${LOG_FILE}_info.log/file!--大小和时间基于滚动策略--rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicyfileNamePattern${LOG_HOME}${LOG_FILE}_info.%d{yyyy-MM-dd}.%i.gz/fileNamePatterncleanHistoryOnStart${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}/cleanHistoryOnStartmaxFileSize${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB}/maxFileSizetotalSizeCap${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0}/totalSizeCapmaxHistory${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-7}/maxHistory/rollingPolicy/appenderappender nameERROR_FILE classch.qos.logback.core.rolling.RollingFileAppenderfilter classch.qos.logback.classic.filter.ThresholdFilterlevelERROR/level/filterencoderpattern${FILE_PATTERN}/patterncharset${FILE_LOG_CHARSET}/charset/encoderfile${LOG_HOME}${LOG_FILE}_error.log/file!--大小和时间基于滚动策略--rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicyfileNamePattern${LOG_HOME}${LOG_FILE}_error.%d{yyyy-MM-dd}.%i.gz/fileNamePatterncleanHistoryOnStart${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}/cleanHistoryOnStartmaxFileSize${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB}/maxFileSizetotalSizeCap${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0}/totalSizeCapmaxHistory${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-7}/maxHistory/rollingPolicy/appender!-- 设置特定包的日志级别 --logger nameorg.springframework levelINFO/logger nameorg.hibernate levelINFO/logger namecom.alibaba levelINFO/logger nameio.netty levelINFO/logger namereactor.netty levelINFO/logger namecom.github.xiaoymin.knife4j.spring.gateway.discover levelINFO/logger namede.codecentric.boot.admin levelINFO/!-- Root Logger --root levelDEBUGappender-ref refGRPC-LOG/appender-ref refCONSOLE/appender-ref refDEBUG_FILE/appender-ref refINFO_FILE/appender-ref refERROR_FILE//root
/configuration四、日志展示
1. 前端 其他地方都有ALL,唯独服务这里是个单选我们需要根据追踪ID一个服务一个服务的找如果能直接根据这个追踪ID去找就好了不过这样也够用了就是没那么直观。
2. 后端
2024-09-08 20:50:31.453 [TID:a7f970f0b12c411aa2b064304a353602.90.17257998314490001] DEBUG 9752 [consumer-service] [nio-9003-exec-3] o.e.n.c.controller.TestController :38 : 消费者服务 RestTemplate
2024-09-08 20:50:31.458 [TID:a7f970f0b12c411aa2b064304a353602.90.17257998314490001] DEBUG 3348 [provider-service] [nio-9000-exec-8] o.e.n.p.controller.TestController :26 : 提供者服务 RestTemplate
2024-09-08 20:50:31.463 [TID:a7f970f0b12c411aa2b064304a353602.90.17257998314490001] DEBUG 2888 [user-service] [nio-9007-exec-1] o.e.user.controller.UserController :31 : 用户服务 admin总结
回到顶部
2024已过了大半回望今年博客数量和质量突飞猛进感觉学到了很多也不算虚度吧。
2024-09-08记。