繁体   English   中英

如何在不使用 Sleuth 的情况下在 Spring Boot 中实现跟踪?

[英]How can I implement Tracing in Spring Boot without using Sleuth?

我正在尝试在登录我的 Spring Boot 应用程序期间实现 Tracing,Sleuth 是我实现的一种选择,而无需进行任何编码排序或其他操作。 但我的问题是定制。 我浏览了 sleuth 的源代码,发现他们正在修改日志记录级别模式以实现跟踪,如何在不添加 sleuth 依赖项的情况下修改日志记录模式?

1.给项目添加依赖,

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-sleuth</artifactId>
             <version>1.3.3.RELEASE</version>
</dependency>

2.我有一个现有的logback-spring.xml & 在那里我不得不更改日志记录模式。 在不更改日志模式的情况下,日志中未显示 id,

现有模式- %date %level [%thread] %logger{10} [%file:%line] %msg%n

新模式- %date %level [%thread] %logger{10} [%file:%line] [%X{X-B3-TraceId},%X{X-B3-SpanId},%X{X-B3-ParentSpanId},%X{X-Span-Export}] %msg%n

你可以使用这样的东西:

package com.team.monitoring;

import java.util.concurrent.TimeUnit;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.Slf4jReporter;

public final class MetricRegistrySingleton {

    public static final MetricRegistry metrics = new MetricRegistry();

    static {
        Logger logger = LoggerFactory.getLogger("com.team.monitoring");
        final Slf4jReporter reporter = Slf4jReporter.forRegistry(metrics).outputTo(logger).convertRatesTo(TimeUnit.SECONDS).convertDurationsTo(TimeUnit.MILLISECONDS).build();
        reporter.start(5, TimeUnit.MINUTES);
    }

    private MetricRegistrySingleton() {
        throw new AssertionError();
    }

}

通过 slf4j,您可以通过这种方式以编程方式配置记录器,您不需要配置文件。

您的 pom.xml 必须如下所示:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.javacodegeeks</groupId>
<artifactId>slf4-spring-boot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>slf4-spring-boot</name>
<url>http://maven.apache.org</url>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <version>1.5.3.RELEASE</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
        <version>1.5.3.RELEASE</version>
    </dependency>
</dependencies>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM