0

プロジェクトに sleuth/zipkin を追加しました。私はログバックを使用しています。デフォルトでは、コンソールとファイルにも非常に適切にフォーマットされたログが表示されます。私はlogstashアペンダーも使用しています.kibanaがそれらのログをどのように表示するかを見ると、まったく満足できません. 詳細は次のとおりです。

pom.xml:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Brixton.SR1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>

    <dependency>
        <groupId>net.logstash.logback</groupId>
        <artifactId>logstash-logback-encoder</artifactId>
        <version>4.6</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>${logback.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-zipkin</artifactId>
    </dependency>

    ...
</dependencies>

私のlogstashアペンダー:

@Component
@ConfigurationProperties(prefix = "logstash")
public class LogstashConfig {

private String uri;

@Value("${spring.application.name}")
private String applicationName;

public void setUri(String uri) {
    this.uri = uri;
}

@PostConstruct
public void init() {
    final Logger rootLogger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
    final LoggerContext loggerContext = rootLogger.getLoggerContext();

    final LogstashTcpSocketAppender logstashTcpSocketAppender = new LogstashTcpSocketAppender();
    logstashTcpSocketAppender.setName(applicationName);
    logstashTcpSocketAppender.setContext(loggerContext);
    logstashTcpSocketAppender.addDestination(uri);

    final LogstashEncoder encoder = new LogstashEncoder();
    encoder.setContext(loggerContext);
    encoder.setCustomFields("{\"application_name\":\"" + applicationName + "\"}");
    encoder.start();

    logstashTcpSocketAppender.setEncoder(encoder);
    logstashTcpSocketAppender.start();

    rootLogger.addAppender(logstashTcpSocketAppender);
    rootLogger.setLevel(Level.INFO);
    rootLogger.info("Logstash succesfully configured: application connected to logstatsh server {}", uri);
}
}

そして、これは私がkibanaで見るものです:

LOG_LEVEL_PATTERN:%clr(%5p) %clr([my-app-name,%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}]){yellow} application_name:my-app-name

ログ パターンによって解決される唯一のものは、アプリケーション名です。いくつかの構成がありませんか? それとも、logstash アペンダーに何か問題があるのでしょうか?

4

0 に答える 0