logback SkyWalking 链路追踪设置

  |   0 评论   |   0 浏览

pom.xml 文件添加相关依赖

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

src/main/resources/logback-spring.xml 中添加对应节点

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="false" scanPeriod="60 seconds" debug="false">
	<property name="logPath" value="${LOGGING_PATH}" />
	<property name="appName" value="book-gateway" />

	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>DEBUG</level>
		</filter>
		<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
			<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
				<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level logName:%logger{36} - [%tid] - Msg:%msg%n%n</pattern>
			</layout>
		</encoder>
	</appender>

	<appender name="fileError"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${logPath}/${appName}-error.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<fileNamePattern>${logPath}/bak/%d{yyyy-MM}/${appName}-info-error-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
			<maxHistory>10</maxHistory>
			<maxFileSize>10MB</maxFileSize>
         	<totalSizeCap>1GB</totalSizeCap>
		</rollingPolicy>
		<append>true</append>
		<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
		    <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
		        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level logName:%logger{36} - [%tid] - Msg:%msg%n%n</pattern>
		    </layout>
		    <charset>UTF-8</charset>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>ERROR</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
	</appender>

	<appender name="fileInfo"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${logPath}/${appName}-info.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<fileNamePattern>${logPath}/bak/%d{yyyy-MM}/${appName}-info-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
			<maxHistory>10</maxHistory>
			<maxFileSize>10MB</maxFileSize>
         	<totalSizeCap>1GB</totalSizeCap>
		</rollingPolicy>
		<append>true</append>
		<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
		    <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
		        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level logName:%logger{36} - [%tid] - Msg:%msg%n%n</pattern>
		    </layout>
		    <charset>UTF-8</charset>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>INFO</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
	</appender>
	
	<root level="INFO">
		<!--<appender-ref ref="console" />-->
		<appender-ref ref="fileInfo" />
		<appender-ref ref="fileError" />
	</root>
	
</configuration>

${LOGGING_PATH},日志路径在系统环境变量设置,Linux 系统在 /etc/profile文件新增用source刷新,统一规划日志输出目录,方便filebeat发送日志给ELK系统。此处不输出console日志,减少服务器不必要性能负担,直接查看文件日志,不用看console日志。

image.png

在 appender-->encoder-->pattern 节点添加 tid 输出标识。

启动程序,skywalking-agent 探针,进行数据采集上报

mvn spring-boot:run -Dspring-boot.run.jvmArguments="-javaagent:D:\SkyWalkingAgent\skywalking-agent.jar -Dskywalking.agent.service_name=book-server1" 
mvn spring-boot:run -Dspring-boot.run.jvmArguments="-javaagent:D:\SkyWalkingAgent\skywalking-agent.jar -Dskywalking.agent.service_name=book-server2" 
mvn spring-boot:run -Dspring-boot.run.jvmArguments="-javaagent:D:\SkyWalkingAgent\skywalking-agent.jar -Dskywalking.agent.service_name=book-service1" 
mvn spring-boot:run -Dspring-boot.run.jvmArguments="-javaagent:D:\SkyWalkingAgent\skywalking-agent.jar -Dskywalking.agent.service_name=book-service2" 
mvn spring-boot:run -Dspring-boot.run.jvmArguments="-javaagent:D:\SkyWalkingAgent\skywalking-agent.jar -Dskywalking.agent.service_name=book-gateway1" 

也可以打包成jar文件,java -jar方式启动。如图,

image.png

然后可以看日志TID输出情况,可以看到还没有访问应用,TID显示 TID:N/A。

image.png

访问网关应用再看日志输出情况,TID标识出现了,如图:

image.png

因为在本机服务集群方式启动,相同应用的日志都输出在同一个文件了,服务器应用部署是在不同机器上不会出现这样情况。

看下SkyWalking 拓扑图,默认端口是8080,调整为了18080,根据自己情况调整,防止端口冲突。

image.png


标题:logback SkyWalking 链路追踪设置
作者:shuikan95
地址:http://javadaily.cn/articles/2020/04/01/1585670887771.html