springboot項目通過logback與sentry集成


logback:https://docs.sentry.io/platforms/java/guides/logback/

sentry-logback庫通過Appender為Sentry提供Logback支持,該Appender將記錄的異常發送給Sentry。配置此集成后,您還可以使用Sentry的靜態API(如使用情況頁面所示),以便執行記錄面包屑,設置當前用戶或手動發送事件等操作。

源可以在Github上找到。

注意:不再維護舊的raven-logback庫。強烈建議您遷移到sentry-logback(本文檔介紹)。有關更多信息,請查看遷移指南。如果您仍在使用raven-logback,可以在此處找到舊文檔。

一、logback的接入與測試

1、安裝

使用Gradle:

implementation 'io.sentry:sentry-logback:5.3.0'

2、配置

以下示例配置在INFO級別記錄到標准輸出的ConsoleAppender和在WARN級別記錄到Sentry服務器的SentryAppender。 ConsoleAppender僅作為非Sentry附加程序的示例提供,該附加程序設置為不同的日志記錄閾值,就像您可能已在項目中使用的那樣。

使用logback.xml格式的示例配置:

<appender name="Sentry" class="io.sentry.logback.SentryAppender">
    <options>
        <!-- NOTE: Replace the test DSN below with YOUR OWN DSN to see the events from this app in your Sentry project/dashboard -->
        <dsn>

https://examplePublicKey@o0.ingest.sentry.io/0</dsn>
    </options>
    <!-- Optionally change minimum Event level. Default for Events is ERROR -->
    <minimumEventLevel>WARN</minimumEventLevel>
    <!-- Optionally change minimum Breadcrumbs level. Default for Breadcrumbs is INFO -->
    <minimumBreadcrumbLevel>DEBUG</minimumBreadcrumbLevel>
</appender>

 接下來,您需要配置DSN(客戶端密鑰)以及可選的其他值,例如環境和發布。有關執行此操作的方法,請參閱配置頁。https://docs.sentry.io/platforms/java/guides/logback/

3、額外數據

由於Logback提供的MDC系統,可以為事件添加額外的數據。

4、關聯TAG

默認情況下,所有MDC參數都存儲在Sentry的“附加數據”選項卡下。通過在配置中指定mdctags選項,您可以選擇將哪些MDC密鑰作為標記發送,這樣就可以將它們用作Sentry UI中的過濾器。見下面的logWithExtras方法。

5、完整的測試代碼:

package com.transsnet.palmpay.sentry;

import com.transsnet.palmpay.contract.ConstractTestBase;
import org.joda.time.DateTime;
import org.junit.Test;
import org.slf4j.*;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.LinkedList;
import java.util.List;

@SpringBootTest
public class SentryTest extends ConstractTestBase {


    private static final Logger logger = LoggerFactory.getLogger(SentryTest.class);
    private static final Marker MARKER = MarkerFactory.getMarker("myMarker");
    @Test
    public void logWarnSimpleMessage() {
        // This sends a simple event to Sentry
        logger.warn("This is a warn test");
    }
    @Test
    public void logErrorSimpleMessage() {
        List list = new LinkedList<String>();

        // This sends a simple event to Sentry
        logger.error("This is a error test");
    }

    @Test
    public void logWithTag() {
        // This sends an event with a tag named 'logback-Marker' to Sentry
        logger.error(MARKER, "This is a test");
    }

    @Test
    public void logWithExtras() {
        // MDC extras
        MDC.put("extra_key", "extra_value");
        // This sends an event with extra data to Sentry
        logger.error("This is a extra_key test,at={}", new DateTime());
    }

    @Test
    public void logException() {
        try {
            unsafeMethod();
        } catch (Exception e) {
            // This sends an exception event to Sentry
            logger.error("Exception caught", e);
        }
    }

    public void unsafeMethod() {
        throw new UnsupportedOperationException("You shouldn't call this!");
    }


}

6、結果:

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM