做视频哪个网站素材好,什么网站做的好看,Wordpress循环一行3个div,深圳市做网站的文章目录 1#xff0c;sky walking日志采集功能概述2#xff0c;采集log4j2日志3#xff0c;采集logback日志4#xff0c;效果展示5#xff0c;注意事项 1#xff0c;sky walking日志采集功能概述
在介绍Sky walking日志采集功能之前#xff0c;最好在系统学习一遍日志… 文章目录 1sky walking日志采集功能概述2采集log4j2日志3采集logback日志4效果展示5注意事项 1sky walking日志采集功能概述
在介绍Sky walking日志采集功能之前最好在系统学习一遍日志框架这里推荐楠哥的日志框架 在实际项目中我们需要将项目中的日志采集到sky walking中以便于我们能够快速排查问题sky walking本身提供了logbacklog4jlog4j2日志采集功能。 可以直接进入官网学习和配置 因为现在企业基本上使用logback和log4j2两个日志框架所以我们就只演示这两个日志框架的收集。
2采集log4j2日志
引入依赖 dependencygroupIdorg.apache.skywalking/groupIdartifactIdapm-toolkit-log4j-2.x/artifactIdversion9.0.0/version/dependencydependency !-- 引入log4j2依赖 --groupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-log4j2/artifactId/dependency如果是Spring boot项目中还需要排除他自带的logback日志框架 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdexclusions!-- 去掉springboot默认配置 --exclusiongroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-logging/artifactId/exclusion/exclusions/dependency在resource目录下新建log4j2.xml文件定义日志输出格式等 这里可以参考sky walking官方给出的配置
?xml version1.0 encodingUTF-8?
configuration statusWARN monitorInterval30!--先定义所有的appender--appenders!-- skywalking输出器 --GRPCLogClientAppender nameSkywalkingLogThresholdFilter leveldebug onMatchACCEPT onMismatchDENY/PatternLayout pattern${LOG_PATTERN}//GRPCLogClientAppender/appendersloggersroot levelINFOappender-ref refSkywalkingLog//root/loggers
/configuration
3采集logback日志
如果是在springboot项目中的话不需要引入logback依赖因为上面已经介绍过springboot自带有logback日志框架所以只需要引入sky walking日志上传的工具包依赖 dependencygroupIdorg.apache.skywalking/groupIdartifactIdapm-toolkit-logback-1.x/artifactIdversion9.0.0/version/dependency同样在resource目录下新建logback.xml配置文件
?xml version1.0 encodingUTF-8?
configurationproperty nameLOG_PATTERN value%date{yyyy-MM-dd HH:mm:ss} | %highlight(%-5level) | %boldYellow(%tid) | %boldYellow(%thread) | %boldGreen(%logger) | %msg%n/appender nameSTDOUT classch.qos.logback.core.ConsoleAppenderencoder classch.qos.logback.core.encoder.LayoutWrappingEncoderlayout classorg.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayoutpattern${LOG_PATTERN}/pattern/layout/encoder/appender!-- 使用gRpc将日志发送到skywalking服务端 --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.TraceIdPatternLogbackLayoutPattern${LOG_PATTERN}/Pattern/layout/encoder/appenderroot levelINFOappender-ref refSTDOUT/appender-ref refGRPC_LOG//root/configuration4效果展示
正常情况下日志成功展示效果如下 5注意事项
最近在工作中使用sky walking时遇到一个大坑因为项目已经运行很久了在日志的配置文件中已经有了很多了appender并且有些logger还是自定义的这就导致一个问题日志上传不成功。 在排查过程中反复确认配置是没问题的【自己新建一个项目使用相同配置都能上传成功】最终进过源码调试和查阅很多文档确认还是配置问题 这也是为什么一开始我建议希望在好好系统性学习一下日志框架logger里面有一个additivity配置代表是否需要向上一级logger传递打印信息默认是true但是我们的项目中都是配置了false而我们的sky walking的appender是配置在根logger里面导致了我们的sky walking采集的日志不在同一个上下文中所以没有采集到对应日志。 日志配置说明
?xml version1.0 encodingUTF-8?
configuration!--格式化输出%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符--property namepattern value%d{yyyy-MM-dd HH:mm:ss.SSS} %c [%thread]%-5level %msg%n/!--Appender: 设置日志信息的去向,常用的有以下几个ch.qos.logback.core.ConsoleAppender (控制台)ch.qos.logback.core.rolling.RollingFileAppender (文件大小到达指定尺寸的时候产生一个新文件)ch.qos.logback.core.FileAppender (文件)--appender nameconsole classch.qos.logback.core.ConsoleAppender!--输出流对象 默认 System.out 改为 System.err--targetSystem.err/target!--日志格式配置--encoder classch.qos.logback.classic.encoder.PatternLayoutEncoderpattern${pattern}/pattern/encoder/appender!--用来设置某一个包或者具体的某一个类的日志打印级别、以及指定appender。loger仅有一个name属性一个可选的level和一个可选的addtivity属性name:用来指定受此logger约束的某一个包或者具体的某一个类。level:用来设置打印级别大小写无关TRACE, DEBUG, INFO, WARN, ERROR, ALL 和OFF如果未设置此属性那么当前logger将会继承上级的级别。additivity:是否向上级loger传递打印信息。默认是true。logger可以包含零个或多个appender-ref元素标识这个appender将会添加到这个logger--!--也是logger元素但是它是根logger。默认debuglevel:用来设置打印级别大小写无关TRACE, DEBUG, INFO, WARN, ERROR, ALL和 OFFroot可以包含零个或多个appender-ref元素标识这个appender将会添加到这个logger。--root levelALLappender-ref refconsole//root
/configuration
修改方案要么将additivity设置为true要么将所有appender放在root标签里面。