跳至主要內容

log-starter 使用说明

Mr.Vincent大约 2 分钟开发指引log

一、介绍

ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana  该插件提供统一的日志处理方案,利用自定义注解埋点日志,可以把日志发送到kafka传送到elk日志分析平台,提供开发人员调试等

二、使用说明

<dependency>
  <groupId>com.pcitc.si</groupId>
  <artifactId>common-log-starter</artifactId>
  <version>1.0.0-SNAPSHOT</version>
</dependency>

三、配置说明

配置 application.yml

tlog:
  mdc-enable: true
  
log:
  enable: true
  kafka:
    topic: elk-log
    servers: xxx.xxx.xxx.xxx:xxxx
    
    

配置logback-spring.xml

 	<springProperty scope="context" name="SERVER_NAME" source="spring.application.name"/>
    <springProperty scope="context" name="KAFKA_TOPIC" source="log.kafka.topic"/>
    <springProperty scope="context" name="KAFKA_SERVERS" source="log.kafka.servers"/>
    <springProperty scope="context" name="SERVER_NAME" source="spring.application.name"/>
    
    
      <appender name="kafkaAppender" class="com.github.danielwegener.logback.kafka.KafkaAppender">
        <encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder">
            <pattern>
                {
                "SERVER_NAME":"${SERVER_NAME}",
                "timestamp": "%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ}",
                "preIp": "%X{preIp:-}",
                "preIvkApp": "%X{preIvkApp:-}",
                "traceId": "%X{tlogTraceId:-}",
                "spanId": "%X{tlogSpanId:-}",
                "pid": "${PID:-}",
                "logger": "%logger",
                "level": "%p",
                "message": "%msg",
                "host": "%X{currIp}",
                "stackTrace": "%ex"
                }
            </pattern>
            <charset>UTF-8</charset>
        </encoder>
        <topic>${KAFKA_TOPIC}</topic>

        <keyingStrategy class="com.github.danielwegener.logback.kafka.keying.NoKeyKeyingStrategy" />

        <deliveryStrategy class="com.github.danielwegener.logback.kafka.delivery.AsynchronousDeliveryStrategy" />

        <producerConfig>bootstrap.servers=${KAFKA_SERVERS}</producerConfig>

        <producerConfig>acks=0</producerConfig>

        <producerConfig>linger.ms=1000</producerConfig>

        <producerConfig>max.block.ms=0</producerConfig>

        <producerConfig>client.id=${HOSTNAME}-${CONTEXT_NAME}-logback-relaxed</producerConfig>

    </appender>

四、使用示例

1.手动记录日志 会根据logback root启动日志级别发送到elk环境中,

如root启动info 则info及高于info级别的日志将会发送到elk环境中,如

  public Result<MsgInternalMessageRo> getMessageByid(String id) {
        log.info("info");
        log.error("error");
        log.warn("warn");
        log.debug("debug")
 }

打印结果

info
error
warn

2.如需要记录方法的可以在方法上添加@MethodLog注解,如

 	@MethodLog(desc = "通过id获取信息详情")
    public Result<MsgInternalMessageRo> getMessageByid(String id) {
    }

则会在调用该方法时记录调用日志发送到kafka队列消息 然后可以在kibanna查看调用信息

查询日志

Kibana是一个针对[Elasticsearch](https://so.csdn.net/so/search?q=Elasticsearch)的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。

本机添加hosts 配置

xxx.xxx.xxx.xxx kibana.kubesphere.com

kibana访问地址

http://kibana.kubesphere.com/

1.打开之后点击左上角的discover

2.选择索引规则 kafka-elk-*,

3.可以录入筛选条件点击 refrash进行筛选日志。

traceid,spanid的用途

日志发送到elk会在业务日志中打上 traceid,spanid标签用于提供链路查询