首页 > 解决方案 > 如何使用 Java Spring Boot 中的 Sentry Logback 日志集成实现 SENTRY_TAGS 的环境变量插值?

问题描述

使用环境(shell)变量时,它们是通过 sentry logback 集成添加和发送的。

但是,有一个很大的警告,它们不是插值的。

SENTRY_DSN=https://xxxxxxxx@sentry.io/xxxxxx
SENTRY_TAGS=app:MyApplication,host:$HOSTNAME,project:${CI_PROJECT_NAME},branch:${CI_COMMIT_REF_NAME}
SENTRY_ENVIRONMENT=${CI_COMMIT_REF_NAME}

即使这些变量有值,也会发生这种情况,它不会被替换。

$HOSTNAME不会也${CI_COMMIT_REF_NAME}不会被解决/替换。它将导致刚刚逐字添加的字符串并发送到哨兵,如屏幕截图所示:

在此处输入图像描述

logback-spring.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

            <appender name="Sentry" class="io.sentry.logback.SentryAppender">
                <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                    <level>WARN</level>
                </filter>
            </appender>
            <root level="INFO">
                <!-- Log both to console(collected by SumoLogic and Cloudwatch) and Sentry -->
                <appender-ref ref="CONSOLE"/>
                <appender-ref ref="Sentry"/>
            </root>

</configuration>

本文解释了如何使用 logback 集成,但没有提及 SENTRY_TAGS 或其他变量 https://blog.sentry.io/2016/01/28/capturing-java-exceptions

这里有一个类似的问题:为 logback.xml Sentry appender 动态设置 Sentry 的环境变量

标签: javashellspring-bootsentryspring-logback

解决方案


推荐阅读