티스토리 뷰
회사에서 진행한 프로젝트에 sentry를 연동하면서 정리한 글이다.
프로젝트에서는 Gradle을 사용했으며, Spring boot 2.1.0, log4j2를 사용했다.
먼저 Spring boot 2.1.0 버전부터 지원을 한다.
위 버전 아래는 아예 다른 방식이어서 다루지 않는다.
2.1.0 버전 아래는 아래 링크를 참고하자.
회사에서 Spring boot 2.0.4를 사용하고 있었는데 이번 기회에 버전업을 진행했다.
🐻
버전업에 관련해서 주의할 점에 대한 글은 따로 정리하자.
Spring boot에서는 다음과 같은 라이브러리를 사용한다.
implementation 'io.sentry:sentry-spring-boot-starter:5.7.0'
위 라이브러리를 사용하려면 Gson 버전 2.7 이상을 사용해야한다.
위 라이브러리가 Gson을 의존하기 있기 때문이다.
🐻
sentry project 설치와 sentry dsn 위치는 다른 포스팅에서 다룰 예정이다.
Configure
스프링 프로젝트에서 application.yml 파일에 다음과 같이 sentry 정보를 기입한다.
sentry:
dsn: [SENTRY DSN 값]
위처럼 yaml파일에 입력만 해준다면 sentry를 사용할 수 있다.
나는 저 라이브러리만 build.gradle에 추가해주면 사용할 수 있다는 점에 놀라웠다.
따로 configure해주는 부분이 없는데 사용할 수 있기 때문이다.
SpringBootApplication 혹은 SpringBootConfiguration 어노테이션에 붙어서 자동으로 해준다.
기본적으로는 처리되지 않은 예외만 sentry로 전송된다.
이건 다음과 같이 application.yml에 지정해주면 @ExceptionHandler 주석 메서드에 의해 처리되는 예외를 포함하여 더 위에 있는 예외들도 sentry로 보내줄 수 있다.
sentry:
exception-resolver-order: -2147483647
🐻
-2147483647 값은 org.springframework.core.Ordered#HIGHEST_PRECEDENCE 이다.
log4j2
sentry에서는 기본적으로 logback을 default로 하고 있다.
하지만 현 프로젝트에서는 log4j2를 사용하므로 log4j2로 사용하는 방법도 알아보자.
log4j2는 기본적으로 xml이 default다.
YAML을 사용하려면 다음과 같은 라이브러리 의존성을 추가해줘야 한다.
implementation 'com.fasterxml.jackson.core:jackson-databind'
implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml'
내가 현 프로젝트에서는 globalException을 만들어 애플리케이션에서 일어나는 모든 에러를 해당 클래스에서 처리를 해줬다.
그래서 이 부분에 다음 코드를 추가해 sentry에 예외를 보내줄 수 있다.
Sentry.captureException(e);
그렇다면 위처럼 쌓이는 걸 볼 수 있다.
Timezone 변경
위 사진을 보면 UTC로 쌓이는걸 알 수 있다.
위 링크로 들어가자.
(계정이 있어야 하는데, 계정 관련해서는 다른 포스팅에서 다룰 예정이다.)
(TODO 센트리 계정 관련 링크 추가)
Timezone을 Asia/Seoul로 바꿔주면 해결된다.
sentry에는 Scope과 Breadcrumbs라는 기능이 있는데 이 기능은 다음 포스팅에서 살펴보자.
또한, sentry를 깔끔하게 사용하려면 GlobalException, Interceptor에 관해서도 다음 포스팅에서 다룰 예정이다.
'Sping Framework' 카테고리의 다른 글
Spring Boot에서 에러 처리하기 (0) | 2022.04.03 |
---|---|
Spring Boot에 Sentry 끼얹기 [2] (1) | 2022.04.03 |
Mono [1] (0) | 2022.02.04 |
MonoSink (0) | 2022.02.04 |
webflux - RequestPredicate(interface) (0) | 2022.02.01 |
- Total
- Today
- Yesterday
- 클린 코드
- MSA
- 정규표현식
- BAEKJOON
- kkoon9
- Spring
- Spring Boot
- JPA
- 이팩티브 자바
- node.js
- kotest
- BOJ
- 객체지향
- Java
- 디자인패턴
- 알고리즘
- Effective Java
- 클린 아키텍처
- AWS
- 코테
- Olympiad
- 디자인 패턴
- 프로그래머스
- Kotlin
- programmers
- Algorithm
- 백준
- C++
- 테라폼
- 이펙티브 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |