在skywalking的UI端有一個日志的模塊,用於收集客戶端的日志,默認是沒有數據的,那么需要如何將日志數據傳輸到skywalking中呢?日志框架的種類很多,比較出名的有log4j,logback,log4j2,就以logback為例子介紹一下如何配置,官方文檔如下:
- log4j:https://skywalking.apache.org/docs/skywalking-java/v8.8.0/en/setup/service-agent/java-agent/application-toolkit-log4j-1.x/
- log4j2:https://skywalking.apache.org/docs/skywalking-java/v8.8.0/en/setup/service-agent/java-agent/application-toolkit-log4j-2.x/
- logback:https://skywalking.apache.org/docs/skywalking-java/v8.8.0/en/setup/service-agent/java-agent/application-toolkit-logback-1.x/
1、添加依賴
根據官方文檔,需要先添加依賴,如下:
<dependency> <groupId>org.apache.skywalking</groupId> <artifactId>apm-toolkit-logback-1.x</artifactId> <version>8.7.0</version> </dependency>
2、添加配置文件
新建一個logback-spring.xml
放在resource目錄下,配置如下圖:
<!-- 日志傳輸到skywalking中的appender,通過qrpc傳輸 --> <appender name="gpc-log" 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>${log.pattern2}</Pattern> </layout> </encoder> </appender>
<root level="info"> <appender-ref ref="gpc-log"/> </root>
啟動項目后,skywalking中的日志模塊輸出的日志如下圖:
注意:如果agent和oap服務不在同一台服務器上,需要在/agent/config/agent.config
配置文件末尾添加如下配置:
plugin.toolkit.log.grpc.reporter.server_host=${SW_GRPC_LOG_SERVER_HOST:10.10.10.1}
plugin.toolkit.log.grpc.reporter.server_port=${SW_GRPC_LOG_SERVER_PORT:11800}
plugin.toolkit.log.grpc.reporter.max_message_size=${SW_GRPC_LOG_MAX_MESSAGE_SIZE:10485760}
plugin.toolkit.log.grpc.reporter.upstream_timeout=${SW_GRPC_LOG_GRPC_UPSTREAM_TIMEOUT:30}
配置分析如下圖: