GCP и Spring logback.Серьезность всегда информация - PullRequest
0 голосов
/ 22 апреля 2019

При регистрации ошибок на стекдрайвере каждое сообщение регистрируется как INFO, даже при использовании log.error или log.warn и т. Д., Но полезная нагрузка правильная.

enter image description here

Я бы хотел иметь возможность фильтровать по серьезности и получать электронную почту при ошибке.

Я использую Spring Boot и Logback. Приложение было развернуто в кластере Kubernetes на GCP.

Вот мой 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: Гринвич. РЕЛИЗ

Что не так с этим конфигом? Есть ли другое решение?

РЕДАКТИРОВАТЬ: только что понял, что вышеописанное приложение STACKDRIVER не регистрирует в Stackdriver, но достаточно STDOUT (может быть, это кластер Kubernetes?), Но проблема сохраняется

1 Ответ

1 голос
/ 29 апреля 2019

Конфигурация агента журналирования Stackdriver для Kubernetes по умолчанию имеет значение INFO для любых журналов, записанных в стандартный вывод контейнера, и ERROR для журналов, записанных в stderr.Если вы хотите более детальный контроль над серьезностью, вы можете настроить Spring для регистрации в виде однострочного JSON (например, через JsonLayout 1 ) и позволить агенту ведения журнала подобрать серьезность из объекта JSON (см. https://cloud.google.com/logging/docs/agent/configuration#process-payload).

1 По умолчанию JsonLayout будет использовать «уровень» для уровня журнала, в то время как агент ведения журнала Stackdriver распознает «серьезность», поэтомувозможно, вам придется переопределить addCustomDataToJsonMap.

См. также GKE & Stackdriver: формат ведения журнала регистрации Java?

...