Tracking error real time với Sentry
Phần 3 — Sentry và Spring Boot
Updated: 22/6/2021
Sau khi cài đặt Sentry thành công thì giờ là lúc tích hợp vào project của mình rồi.
Tạo project trên Sentry
-
Vào mục
Project
từ left menu. ChọnCreate Project
-
Lựa chọn ngôn ngữ và đặt tên cho project.
- Assign project cho 1 team và bấm
Create Project
-
Sau khi project được tạo, vào
Project Setting
>Client Key
. Ở đây sẽ lấy được DSN link dùng để config trong project nhé: - OK, xong. Giờ chuyển qua phần tích hợp vào project nào.
Dependencies
Đầu tiên là thêm dependencies vào file pom.xml
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<dependencies>
...
<dependency>
<groupId>io.sentry</groupId>
<artifactId>sentry-spring-boot-starter</artifactId>
<version>5.0.1</version>
</dependency>
<dependency>
<groupId>io.sentry</groupId>
<artifactId>sentry-logback</artifactId>
<version>5.0.1</version>
</dependency>
...
</dependencies>
Configuration
Config sentry option
Trong file application.yml
trong thư mục src/resource
thêm các nội dung sau:
1
2
3
4
5
sentry:
dsn: <DSN_URL>
environment: <ENVIRONMENT>
tags:
<some tag name>: <tag value>
Danh sách đầy đủ các option có thể xem tại đây
Config Spring beans
Tạo class SentryConfiguration
và thêm đoạn code sau để có thể gắn kèm các thông tin của user khi catch exception:
1
2
3
4
5
6
7
8
9
10
11
12
import org.springframework.stereotype.Component;
import io.sentry.core.protocol.User;
import io.sentry.spring.SentryUserProvider;
@Component
class CustomSentryUserProvider implements SentryUserProvider {
public User provideUser() {
User user = User();
// ... set user information
return user;
}
}
Integrating with logback
Cần lưu ý là sau khi các bean ở trên thì chỉ có thể bắt được các Exception được throw ra phía ngoài cùng thôi nhé.
Nếu có exception nào đã catch lại rồi thì chịu. Để xử lý vấn đề này thì cần phải custom lại logback mặc định của spring boot.
Tạo file logback-spring.xml
cụng tại thư mục src/resource
:
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<appender name="SENTRY" class="io.sentry.logback.SentryAppender" />
<root level="info">
<appender-ref ref="CONSOLE" />
<appender-ref ref="SENTRY" />
</root>
</configuration>
Ý nghĩa cái config trên cũng đơn giản thôi. Mỗi khi sử dụng hàm log.error()
thì exception cũng được tự động gửi lên Sentry nữa.
Đấy, xong rồi. Apply Sentry vào Spring Boot cũng đơn giản mà 😘
Source code tham khảo: https://github.com/halab4dev/spring-sentry