有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在Spring Boot中实现跟踪而不使用Sleuth?

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


共 (2) 个答案

  1. # 1 楼答案

    你可以用这样的方法:

    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>
    
  2. # 2 楼答案

    一,。向项目添加依赖项

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

    二,。我有一个现有的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