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

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文件引入依赖
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)
yaml 复制代码
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 复制代码
<?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
java 复制代码
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. 调试

这里我们可以看到 , 我们把项目中的错误日志收集起来了 , 以及这个错误出现的接口地址 , 路径 ,点进详情 ,

也可以看到更详细的信息 ,: 系统,浏览器,错误详细打印日志,等

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

相关推荐
li_Michael_li1 分钟前
Spring Boot中@Valid 与 @Validated 注解的详解
java·spring boot·后端
橘猫云计算机设计22 分钟前
基于springboot钻孔数据管理系统的设计与实现(源码+lw+部署文档+讲解),源码可白嫖!
java·spring boot·后端·信息可视化·汽车·毕业设计
呆萌很1 小时前
基于 Spring Boot 瑞吉外卖系统开发(四)
spring boot
摆烂工程师1 小时前
Grok3 API 已经全网上线了!并且 Grok3 API 可以免费使用
前端·后端·程序员
增强1 小时前
腾讯云人脸核身服务端实现(一)
后端
Emma歌小白1 小时前
DataFrame 是否不为空
后端
MartinRY1 小时前
SpringBoot将HTML转化成PDF文件
spring boot·pdf·html
拉丁解牛说技术1 小时前
AI大模型 prompt 工程指南实战
后端·程序员·mcp
有来技术2 小时前
全栈架构后端攻坚:基于 youlai - boot(开源)、Spring Boot 3 与 Spring Security 6 实现企业级权限系统全功能实战手册
java·spring boot·后端
helloworld_工程师2 小时前
Spring AI应用:利用DeepSeek+嵌入模型+Milvus向量数据库实现检索增强生成--RAG应用(超详细)
java·后端