본문 바로가기
로깅

[로깅] 로깅 #2

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

이번 포스팅은 저번 포스팅(로깅 #1 편)에 이어 Slf4j 의 동작과정과 순수 자바 코드로 로깅을 해보는 예제를 가져와 봤습니다.

 

SLF4J 란

Simple Logging Facade For Java 의 약자로

다양한 로깅 프레임 워크에 대한 추상화(인터페이스) 를 제공하는 라이브러리 입니다.

 

Slf4j 단독으로 사용이 불가능하며,

로깅 프레임워크를 Binding(연결) 하여 로깅 코드를 수행하는 과정을 거칩니다.

 

Bridge : 다른 로깅 API로의 logger 호출을 SLF API로 연결 ( 이전의 레거시 로깅 프레임워크를 위한 라이브러리 를 연결할 수 있게 함 )

SLF4J API : 로깅에 대한 추상 레이어(인터페이스) 제공 ( 하나의 API 모듈에 하나의 Binding 모듈 ) 

Binding : SLF4J API를 로깅 구현체(로깅 프레임 워크)와 연결 

Logback : Logback 은 로깅 프레임워크 중에 하나 입니다.

 

자바 실습 1 ) Sout

순수 자바를 이용하여 로깅을 실습해보겠습니다.

( 자바 버전은 11 이며 빌드툴은 gradle 을 사용했습니다. )

 

먼저, 자바에서 기본적으로 사용할 수 있는 System.out.println 으로 로깅하기 위해

SoutApplication 이라는 클래스를 만들고 코드를 작성하겠습니다.

위 처럼 작성하면,

아래와 같은 결과를 볼 수 있습니다.

전 포스팅에서 언급했듯 System.out.println 은 성능상 문제가 있어서 잘 사용하지 않습니다.

자바 실습 2) Slf4j + logback

이번에는 주로 사용되는 로깅 프레임워크를 이용하여 로깅을 해보겠습니다.

우선, slf4j 를 사용할 수 있는 slf4j 라이브러리를 build.gradle 에 추가해줍니다.

 

다음으로 Log를 수행할 LogApplication 클래스를 만들어주고 메인 메서드를 선언하고 

Slf4j 를 사용할 수 있는 코드를 작성합니다.

 

이를 실행하면

다음과 같은 결과가 출력됩니다.

 

저희가 의도한 메세지와는 다르게 에러를 뱉어버립니다.

로그에서 언급한 링크를 타고 들어가보면 이러한 reference 가 등장합니다.

( https://www.slf4j.org/codes.html#StaticLoggerBinder )

이를 해석해보면 SLF4J API 를 수행하는 Binding 클래스를 찾을 수 없다고 합니다.

위에서 언급되지 않았나요?

Slf4j 는 로깅을 수행하는 모듈이 아닌 로깅에대한 추상 레이어를 지원하는 역할입니다. 

한마디로, Slf4j 단독으로 실행이 불가능하며, 실제 수행 하는 구현 프레임워크가 따로 필요하다는 것입니다.

 

다시 코드로 돌아와서 로깅 프레임워크(logback)을 사용하기위하여 build.gradle 파일에 logback 의존성을 추가해 줍시다.

 

라이브러리가 등록된 것을 확인하고, 아까 작성한 LogApplication 을 실행 시키면??

저희가 원하던 로그가 출력되었습니다!

 

 

이번 편은 여기까지 하며 다음 편은 Spring을 이용하여 로그를 관리하고, 

logback 을 심화하여 사용해보겠습니다.

 

Reference

- https://www.youtube.com/watch?v=1MD5xbwznlI

- https://www.youtube.com/watch?v=fkwb8coxBJM&t=95s 

- https://github.com/Livenow14/slf4j-logback-lab

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

[로깅] 로깅 #3  (0) 2022.05.09
[로깅] 로깅 #1  (0) 2022.05.05

댓글