log-starter 使用说明
大约 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标签用于提供链路查询