티스토리 뷰

회사에서 진행한 프로젝트에 sentry를 연동하면서 정리한 글이다.

프로젝트에서는 Gradle을 사용했으며, Spring boot 2.1.0, log4j2를 사용했다.

 

먼저 Spring boot 2.1.0 버전부터 지원을 한다.

위 버전 아래는 아예 다른 방식이어서 다루지 않는다.

2.1.0 버전 아래는 아래 링크를 참고하자.

 

Spring for Java

An updated Java SDK supersedes this deprecated version. Sentry preserves this documentation for customers using the old client. We recommend using the updated

docs.sentry.io

회사에서 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로 쌓이는걸 알 수 있다.

 

Sign In | Sentry

 

sentry.io

위 링크로 들어가자.

(계정이 있어야 하는데, 계정 관련해서는 다른 포스팅에서 다룰 예정이다.)

(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
링크
«   2025/02   »
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
글 보관함