본문 바로가기
로깅

[로깅] 로깅 #3

by 코딩하는경준 2022. 5. 9.

이번 포스팅은 저번 포스팅(로깅 #2 편)에 이어 Spring 을 이용하여 로깅 프레임워크를 사용하는 예제를 가져와봤습니다.

로깅은 이번편이 마지막 편 입니다.

 

프로젝트 생성

스프링 프로젝트를 생성할 수 있는 start.spring.io

혹은 IntelliJ 에서

프로젝트를 생성해줍시다.

 

 

의존성(라이브러리) 관리

이번편은저번 편보다 예제가 쉬울겁니다. 왜냐하면 spring 은 기본적으로 로깅프레임워크가 세팅되어 있기 때문이죠.

 

이런걸 보면 정말로 스프링을 개발하신 개발자분들이 존경스럽고 감사함을 느낍니다.

 

그래서 이번에는 스프링 프로젝트를 처음 생성했을때 세팅되어있는 의존성(라이브러리) 를 제외한

spring boot-starter-web 만 추가해주겠습니다.

 

예제는 간단하게 localhost:8080/{로깅레벨} url 에 들어갔을때 해당 로깅레벨이 출력이 되며

console 또는 파일에 로그를 출력을하는 예제 입니다.

코드작성

HelloController 에는 이렇게 작성을 해줍니다.

src/main/resources 경로에 logback 을 설정할 수 있는 logback.xml 파일을 만들어줍시다 .

<springProfile> : logback 설정 파일에서 복수개의 프로파일 설정 가능 ( 위 예제는 프로파일이 test 일 경우와 prod 일 경우 에 상황이 달라지게 설정 가능 )

 

<appender> : Logback은 로그 이벤트를 write하는 작업을 Appender 에게 위임합니다.

( 즉, Appender는 로그 메세지가 출력될 대상을 결정합니다. ) 

위 예제를 보시면 test 프로파일 환경에서는 콘솔에 출력을 하고

prod 프로파일 환경에서는 파일에 적용합니다.

name 에는 appender 의 이름을 지정해주고 class 에는 표시될 콘텐츠의 class의 이름을 적어줍니다.

 

<pattern> : pattern 은 로그에 표시될 형식을 지정해줍니다. 패턴형식은 여러 곳에서 사용되므로 프로퍼티로 설정해준다음 필요할때마다 불러와서 사용합니다.

 

<rollingPolicy> : 파일형식으로 저장될때, 규칙을 정할 수 있는 설정코드입니다.

위 세팅은 100MB 또는 30일 이경과됐거나 로그파일의 사이즈가 총 3GB 가 넘는다면 오래된 순서대로 파일을 지우는 설정입니다. 

 

<root> : 출력이 될 수 있게 레벨을 설정하고 사용할 appender 을 선언할 수 있습니다. 위 예제는 info 레벨 이상의 로그만 띄워 줍니다.

 

( 디버그 레벨까지 해버리면 너무 많은 정보가 표시되기에 Info 레벨 이상으로 사용하는 편입니다. )

 

Console 에 로그 띄우기

logback.xml 에서 프로파일 별로 로그를 다르게 띄워주기로 했죠?

프로파일 설정을 해보겠습니다.

오른쪽위의 프로파일 목록에서 Edit Configurations... 를 누른뒤

왼쪽의 + 버튼을 눌러줍니다.

Spring boot 를 검색해준다음 추가해줍니다.

다음 프로파일의 이름을 설정해주고, 동작할 메인클래스를 지정해준다음 프로파일을 test 로 지정해줍니다.

 

그리고 실행을하면 지정한 메세지와 함께 로그가 출력됩니다.

( 평소 스프링을 실행했을때와는 뭔가 다른느낌이 있죠? 색깔이 없어졌습니다. 색깔은 logback.xml 에서 설정할 수 있지만 다루지 않겠습니다. )

다음 localhost:8080/hello 를 접속하면 페이지에는 hello! 가 출력되며 로그에는 다음과 같이 출력됩니다.

다른 url들은 생략하겠습니다.

 

파일에 로그 띄우기

이번엔 prod 로 프로파일을 생성해줍니다.

 

그리고 실행을 해보면

아까와는 다르게 콘솔에 로그가 나오지 않으며

로그가 파일에 출력이 됩니다.

 

 

'로깅' 카테고리의 다른 글

[로깅] 로깅 #2  (0) 2022.05.05
[로깅] 로깅 #1  (0) 2022.05.05

댓글