하이~~!!
저번 포스팅에서 우리는 AOP라는 녀석을 스프링 환경에서 사용하는 걸 공부했었다.
https://devkingdom.tistory.com/115
그때 내가 AOP를 이용해서 로깅시스템도 분리해서 모듈화 한다고 하고 그랬다. 오늘은 조금 더 구체적으로 로그남기는 것 관련해서 얘기를 조금 해보도록 하겠다.
Spring 에서는 다양하게 로그를 남기는 프레임워크를 제공하고 있는데 음 실무에서 많이 본게 Log4j나 요즘은 Logback 같은걸 이용해서 많이 남긴다.
스프링 부트에서는 기본적으로 Logback을 내장하고 있다.
Log 의 중요성?
로그는 굉장히 중요하다. 로그를 남겨야 개발 과정에서 디버깅이 편리하고, 운영 과정에서도 에러가 발생할 때 신속하게 대응할 수 있다. 뿐만아니라 요즘에는 빅데이터가 굉장히 뜨고 있는데.. ! 사용자들이 사용하는 패턴이나 데이터들을 로그를 통해 남겨놔야 나중에 활용이 가능해진다.
로그는 굉장히 대량으로 발생하는 데이터다. 이러다보니 과거에는 이 로그를 축적하는게 부담스러웠다. 허나 이제는 빅데이터 처리환경이 된다. 그렇기에 대부분의 기업에서 로그를 쌓아두고 관리한다.
Logging Level
스프링에서 기본적으로 로깅레벨을
- TRACE
- INFO
- DEBUG
- WARN
- ERROR
이렇게 다섯가지로 나눈다. 보통 운영 단계에서는 INFO 로 로그를 남기고, 개발단계에서는 DEBUG 레벨로 로그를 남긴다.
그리고 WARN이나 ERROR 의 경우는 장애상황에 남긴다고 보면 될 것 같다.
스프링부트 환경에서 이러한 레벨 설정은 application.properties에다가 아래처럼 설정값을 넣어주면된다.
logging.level.org.springframework=ERROR
logging.level.com.test.crudPjt=DEBUG
간단하게 설명하면 시스템 단에서 발생하는 로그는 ERROR 레벨로, 어플리케이션 단에서 발생하는 로그는 DEBUG로 남긴다는 의미이다.
구현
간단하게 구현해보자.
private static final Logger LOGGER = LoggerFactory.getLogger(UserController.class);
로그를 남기고자하는 클래스에 Logger를 하나 만들어준다. Logger이나 LoggerFactory의 경우 slf4j를 썼다.
그리고 로그를 남기고자 하는 곳에서
1
2
3
4
5
6
|
@TokenRequired
@GetMapping("/{userid}")
public User getUserByUserId(@PathVariable String userid) {
LOGGER.debug("userid : {}",userid);
return userService.getUserByUserId(userid);
}
|
이렇게 debug라는 메서드를 써주면 디버깅 레벨의 로그가 남게된다 ㅎㅎ
그리고 해당 서비스를 콜해보면 ..!
이렇게 이쁘게 로그가 남는걸 확인할 수 있다.
참쉽지~~~?? 다들 오늘도 즐거운 하루 보내자.
'Develop > Spring' 카테고리의 다른 글
[Spring] Spring boot 구동 시 특정 코드 실행하는 방법 (2) | 2020.05.15 |
---|---|
[Spring] Spring에서 예외 처리하기 (1) | 2020.04.05 |
[Spring] Spring AOP 이용하기 (0) | 2020.04.05 |
[Spring] JUnit을 활용한 스프링 메서드 모듈 테스트하기 (0) | 2020.03.29 |
[Spring] JWT 를 활용한 인증 구현 (7) | 2020.03.28 |
댓글