GCP和Spring logback。严重性始终是信息

问题描述 投票:0回答:1

将错误记录到stackdriver时,即使使用log.error或log.warn等,每条消息都会记录为INFO,但有效负载是正确的。

enter image description here

我希望能够按严重程度进行过滤,并在出错时收到电子邮件。

我正在使用Spring Boot和Logback。该应用程序已部署在GCP上的Kubernetes群集中。

这是我的logback-spring.xml

<configuration>
    <include resource="org/springframework/cloud/gcp/autoconfigure/logging/logback-appender.xml" />

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoders are assigned the type
             ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
        <encoder>
            <pattern>%d{HH:mm:ss, UTC} %-5level %logger{35} - %msg %n</pattern>
        </encoder>
    </appender>

    <springProfile name="prod,qa">

        <root level="WARN">
            <appender-ref ref="STACKDRIVER" />
        </root>
    </springProfile>

</configuration>

这是在Maven中添加的dep

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

Spring Boot版本:2.1.3.RELEASE Spring Cloud版本:Greenwich.RELEASE

这个配置有什么问题?还有其他解决方案吗?

编辑:刚才意识到上面的STACKDRIVER appender不是登录到Stackdriver的那个,但STDOUT就足够了(也许bc它是一个Kubernetes集群?),但问题仍然存在

spring-boot google-cloud-platform logback stackdriver spring-cloud-gcp
1个回答
1
投票

对于写入容器stdout的任何日志,Kubernetes的Stackdriver日志代理配置默认为INFO,对于写入stderr的日志,默认为ERROR。如果要对严重性进行更细粒度的控制,可以将Spring配置为单行JSON(例如,通过JsonLayout1),并让日志记录代理从JSON对象中获取严重性(请参阅https://cloud.google.com/logging/docs/agent/configuration#process-payload)。

1By默认情况下,JsonLayout将使用“level”作为日志级别,而Stackdriver日志代理recognizes将使用“severity”,因此您可能必须覆盖addCustomDataToJsonMap

另见GKE & Stackdriver: Java logback logging format?

© www.soinside.com 2019 - 2024. All rights reserved.