SpringBoot集成Sentry日志收集-3 (Spring Boot集成)

发布于:2025-03-10 ⋅ 阅读:(18) ⋅ 点赞:(0)

Sentry集成Spring Boot , 并进行错误日志收集

1. 在sentry上创建一个项目

在这里插入图片描述

2. 选择项目的平台

在这里我们可以看到sentry还是支持很多品台的 , vue, java , Spring Boot , C , C++ ,Go 等等 , 都支持 ,
根据自己的需求选择创建指定平台的项目即可 (我们这里选择 Spring Boot)

选择平台后 , 要指定项目的名称,以及可以选择团队来查看项目

在这里插入图片描述

创建完成后 , 就会进入到教程页面 , 该页面中包含了Spring Boot集成Sentry的教程 , 按照操作 , 即可 (看不懂没关系 ,下面有教程)

在这里插入图片描述

3. SpringBoot 集成Sentry

  1. 项目中的pom.xml文件引入依赖
        <!--        日志-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>1.2.3</version>
        </dependency>

        <!--       Sentry相关依赖 -->
        <dependency>
            <groupId>io.sentry</groupId>
            <artifactId>sentry-spring-boot-starter</artifactId>
            <version>5.7.3</version>
        </dependency>

        <dependency>
            <groupId>io.sentry</groupId>
            <artifactId>sentry-logback</artifactId>
            <version>5.7.3</version>
        </dependency>
  1. 获取到sentry项目的dns

点击 : 项目 --> spring-boot-test --> 点击又上角的设置按钮(进入到设置页面)

在这里插入图片描述

把dns密钥复制出来,一会要用到

  1. 在项目中的 application.yml 文件中 , 加入配置 (配置中的dns,换成刚才的dns)
sentry:
  dsn: http://6e0e39a3534341e588c8ad3026ba0896@ip/6
  # Set traces-sample-rate to 1.0 to capture 100% of transactions for performance monitoring.
  # We recommend adjusting this value in production.
  traces-sample-rate: 1.0
  1. 在项目的resource目录下,创建 logback.xml文件,并在文件中加入如下配置信息
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,%i索引【从数字0开始递增】,,, -->
    <!-- appender是configuration的子节点,是负责写日志的组件。 -->
    <!-- ConsoleAppender:把日志输出到控制台(可指定文件存放的路径) -->
    <property name="LOG_HOME" value="/home/data/jar_logs/log4j/test_info"/>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %class{36}.%method\(%class{0}.java:%line\) -
                %msg%n
            </pattern>
            <!-- 控制台也要使用UTF-8,不要使用GBK,否则会中文乱码 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    <!-- RollingFileAppender:滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 -->
    <!-- 以下的大概意思是:1.先按日期存日志,日期变了,将前一天的日志文件名重命名为XXX%日期%索引,新的日志仍然是sys.log -->
    <!--             2.如果日期没有发生变化,但是当前日志的文件大小超过1KB时,对当前日志进行分割 重命名-->
    <appender name="syslog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--<File>${LOG_HOME}/mall-api.log</File>-->
        <!-- rollingPolicy:当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名。 -->
        <!-- TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 活动文件的名字会根据fileNamePattern的值,每隔一段时间改变一次 -->
            <!-- 文件名:log/sys.2017-12-05.0.log -->
            <fileNamePattern>${LOG_HOME}/test.%d.stdout.log</fileNamePattern>
            <!-- 每产生一个日志文件,该日志文件的保存期限为30天 -->
            <maxHistory>30</maxHistory>
            <!--<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">-->
            <!--<maxFileSize>10MB</maxFileSize>-->
            <!--</timeBasedFileNamingAndTriggeringPolicy>-->
        </rollingPolicy>
        <encoder>
            <!-- pattern节点,用来设置日志的输入格式 -->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %class{36}.%method\(%class{0}.java:%line\) -
                %msg%n
            </pattern>
            <!-- 记录日志的编码 -->
            <charset>UTF-8</charset><!-- 此处设置字符集 -->
        </encoder>
    </appender>
    
<!-- 指定sentry-->
    <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>http://3c7665cc6634401bb5a53b1c998a2297@ip/5</dsn>
        </options>
        
    </appender>
    <!-- 控制台输出日志级别 -->
    <root level="error">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="syslog"/>
    </root>
    <!--    <logger name="org.apache.zookeeper.ClientCnxn">-->
    <!--        <level value="debug"/>-->
    <!--        <appender-ref ref="STDOUT"/>-->
    <!--    </logger>-->
    <!-- 指定项目中某个包,当有日志操作行为时的日志记录级别 -->
    <!-- com.grow.api为根包,也就是只要是发生在这个根包下面的所有日志操作行为的权限都是DEBUG -->
    <!-- 级别依次为【从高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE  -->
    <logger name="com.grow" level="INFO" additivity="false">
<!--        注册普通打印日志-->
        <appender-ref ref="syslog"/>
<!--        注册sentry日志系统-->
        <appender-ref ref="Sentry"/>
    </logger>
    <!--    <logger level="DEBUG">-->
    <!--        <appender-ref ref="syslog"/>-->
    <!--    </logger>-->
</configuration>
  1. 增加测试的controller , 并进行调试sentry
package com.example.springtest.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author lep
 * @date 2022-01-05 17:19
 */
@RestController
@RequestMapping("/test")
@Slf4j
public class GoodsController {

    // 打印不同的日志信息
    @GetMapping("/test1")
    public String test1() {
        log.info("测试sentry打印info日志");
        log.debug("测试sentry打印debug日志");
        log.warn("测试sentry打印warn日志");
        log.trace("测试sentry打印trace日志");
        log.error("测试sentry打印error日志");
        return "成功";
    }

    // 定义一个异常
    @GetMapping("/test2")
    public String test2() {
        String s = null;
        s.equals("b");
        return "成功";
    }
}

编写完成 , 运行项目 , 并调用 test1 ,test2 接口 , 查看sentry控制台页面状态

  1. 调试

在这里插入图片描述

这里我们可以看到 , 我们把项目中的错误日志收集起来了 , 以及这个错误出现的接口地址 , 路径 ,点进详情 ,
也可以看到更详细的信息 ,: 系统,浏览器,错误详细打印日志,等

在这里插入图片描述

这个日志收集系统,基本上已经满足了非常大的需求


网站公告

今日签到

点亮在社区的每一天
去签到