从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(十四) spring boot/cloud +logback/log4j2 集成skywalking日志完整配置

Posted 峡谷电光马仔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(十四) spring boot/cloud +logback/log4j2 集成skywalking日志完整配置相关的知识,希望对你有一定的参考价值。

本文承接上文《从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(十四) 集成skywalking 全链路追踪 完整配置,使用案例及全链路追踪底层原理》

本文主要内容

上文中主要是针对skywalking的部署介绍以及skywalking的链路追踪介绍 实际上,项目上很多时候我们不仅需要看见调用链路,也希望同时可以看见整条链路上的日志
因为微服务场景下,我们经常是几台甚至几十上百台服务器规模的节点部署,日志查看本身就是一个复杂问题
如果资源足够,我们可以使用elk+featbeat +kafka/redis 的日志收集展示模式,如果服务器充足
我一般是这么做的,但是实际上,并不是每个项目都会有这么优厚的资源给你,尤其是一些中小规模的项目
身为架构师,就要考虑换个方案了,由于本文主要基于skywalking ,所以: 本文主要介绍的的是skywalking 下,
logbak/log4j2 将日志发送到skywalking并可视化展示

完整配置以及代码

logback 集成skywalking 可视化日志完整配置

pom 依赖

 <dependency>
            <groupId>org.apache.skywalking</groupId>
            <artifactId>apm-toolkit-trace</artifactId>
            <version>8.7.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.skywalking</groupId>
            <artifactId>apm-toolkit-logback-1.x</artifactId>
            <version>8.7.0</version>
        </dependency>

log4j2 pom

logback-spring.xml 新增

    <property name="log.pattern" value="%dyyyy-MM-dd HH:mm:ss.SSS [%thread] %-5level %logger50 - [%tid] - %msg%n"/>
<appender name="skywalking" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
                <Pattern>%dyyyy-MM-dd HH:mm:ss.SSS [%Xtid] [%thread] %-5level %logger36 -%msg%n</Pattern>
            </layout>
        </encoder>
    </appender>
  <root level="INFO">
        <appender-ref ref="console"/>
        <appender-ref ref="debug"/>
        <appender-ref ref="skywalking" />
    </root>

log4j2 集成skywalking 可视化日志完整配置

pom 依赖

  <dependency>
            <groupId>org.apache.skywalking</groupId>
            <artifactId>apm-toolkit-log4j-2.x</artifactId>
            <version>8.7.0</version>
        </dependency>

log4j2 xml 新增

         <property name="file_pattern" value="%dyyyy-MM-dd HH:mm:ss [%traceId] [%thread] [%-5level]  %msg %l%n" />
        <property name="console_pattern" value="%red%dyyyy-MM-dd HH:mm:ss [%traceId] %green[%thread] %magenta[%-5level] %cyan%msg %l%n"/>
        <property name="skyWalking_pattern" value="%msg %l%n"/>

  <GRPCLogClientAppender name="skywalking">
            <PatternLayout  pattern="$skyWalking_pattern"/>
        </GRPCLogClientAppender>
 <Root level="info" includeLocation="false" additivity="false">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="File"/>
            <AppenderRef ref="skywalking" />
        </Root>

idea或者jar 添加启动命令

-Dskywalking.plugin.toolkit.log.grpc.reporter.server_host=skywalking的ip
-Dskywalking.plugin.toolkit.log.grpc.reporter.server_port=11800

实测效果

篇基于minicloud《【万字原创】 从0~1实现 微服务下 下单/秒杀场景最终一致性解决方案(rocketmq):完整流程,模型,讲解,压测,部署介绍以及完整demo源码和源码说明(1)-整体介绍》的下单流程介绍,想看详细流程和代码的可以看一下

postman 进行一条请求,该请求会经过三个服务

进入skywalking 控制台 http://192.168.1.106:8080/

结语

如图可知日志被发送到了skywalking上(logback 和log4j2 在 skywalking 是一样的),
skywalking 最好配合elasticsearch 增加高并发负载能力
不过我建议大家在服务器资源充足的情况下尽量使用elk+filebeat/flume +kafka/redis
可以做到大型高并发项目日志无入侵收集以及自定义展示,我一般都用这个方案

以上是关于从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(十四) spring boot/cloud +logback/log4j2 集成skywalking日志完整配置的主要内容,如果未能解决你的问题,请参考以下文章

手把手教你,从零开始搭建Spring Cloud Alibaba!这份笔记太牛了

手把手教你,从零开始搭建Spring Cloud Alibaba!这份笔记太牛了

手把手教你,从零开始搭建Spring Cloud Alibaba!这份笔记太牛了

使用 IDEA 从 0 开始搭建 Spring Cloud 微服务

微服务 Spring Cloud Alibaba 项目搭建(一、框架介绍)

从天气项目看Spring Cloud微服务治理