说起分布式日志收集,在技术选型上,一般有两大类: 第一类就是程序将日志写在本地文件,使用代理软件(flume/ filebeat之类)来收集,将其发送到对应的接收端,或是kafka这样的高性能队列集群中. 第二类是程序自己封装,将日志送到接受端.
第一类代理类收集与程序运行无关,但是代理程序也可能存在挂掉而无法收集到日志的囧境,抑或是还需要一个监控系统来监控代理.
第二类需要自己封装,要是没写好还容易丢失日志,或者严重的堆积在内存,抢占CPU,也增加开发的负担.
在skywalking 8.4.0 的发行版中,开始提供该功能. 先上图:
<!-- 监控相关 -->
<skywalking.version>8.4.0</skywalking.version>
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-trace</artifactId>
<version>${skywalking.version}</version>
</dependency>
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
<version>${skywalking.version}</version>
</dependency>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- 省略,下同 -->
</appender>
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
</appender>
<!-- skywalking grpc 日志收集 8.4.0版本开始支持 -->
<appender name="GRPC" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
</appender>
<springProfile name="local">
<logger name="cn.iocoder.dashboard" level="INFO" additivity="false">
<appender-ref ref="STDOUT"/>
<appender-ref ref="GRPC"/>
</logger>
</springProfile>
<root level="DEBUG">
<appender-ref ref="STDOUT"/>
<appender-ref ref="ASYNC"/>
</root>
</configuration>
配置完启动即可,基本不费力~
其他日志框架当然也能接入,也没什么难点,暂时还没找到官方文档.可以直接看源码,是有示例在的.
可以参考其在8.5.0上的这个提交记录
有兴趣可以看看:featureskywalking
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/a17816876003/article/details/115586828
内容来源于网络,如有侵权,请联系作者删除!