본문 바로가기
Develop/Spring

[Spring] Spring 에서 로그 남기기

by 코딩의성지 2020. 4. 5.

하이~~!!

 

저번 포스팅에서 우리는 AOP라는 녀석을 스프링 환경에서 사용하는 걸 공부했었다.

 

https://devkingdom.tistory.com/115

 

[Spring] Spring AOP 이용하기

하이 ~~!! 여러분 !! 오늘은 Spring 에서 아주 중요한 개념인 AOP (Aspect Oriented Programming) 에 대해 이야기 해보려한다. 딱봐도 쉽게 설명을 해줄꺼고 , 구현도 간단하게 해볼꺼다. AOP AOP는 비지니스 로직..

devkingdom.tistory.com

 

그때 내가 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라는 메서드를 써주면 디버깅 레벨의 로그가 남게된다 ㅎㅎ

 

그리고 해당 서비스를 콜해보면 ..!

 

이렇게 이쁘게 로그가 남는걸 확인할 수 있다.

 

참쉽지~~~?? 다들 오늘도 즐거운 하루 보내자.

반응형

댓글