dev-sian / meetings

잡다구리
0 stars 0 forks source link

[Logging] slf4j, log4j, logback, log4j2 #9

Open ParkSunJin opened 2 years ago

ParkSunJin commented 2 years ago

Logging

프로그램 개발 중이나 완료 후 발생할 수 있는 오류에 대해 디버깅하거나 운영 중인 프로그램 상태를 모니터링 하기 위해 필요한 정보(로그)를 (콘솔, 파일, 데이터베이스 등에) 기록하는 것.

Java의 주요 Logging Framework

SLF4J(Simple Logging Facade for Java)

log4j 또는 Logback과 같은 백엔드 Logger Framework의 facade pattern. 다양한 로깅 프레임워크에 대한 추상화레이어를 제공하는 interface의 모음이다. 추상 로깅 프레임워크이기 때문에 단독으로 사용하지 않는다. SLF4J api를 사용하면 구현체의 종류에 상관없이 일관된 로깅 코드를 작성할 수 있다. (로깅 프레임워크를 변경해도 코드를 변경하지 않아도 됨)

slf4j가 인터페이스이고 log4j, logback 이런것들이 구현체라고 생각하면 될듯!

SLF4J API (인터페이스)

로깅에 대한 추상 레이어(인터페이스)를 제공. 즉 로깅 동작에 대한 역할을 수행할 추상 메서드를 제공. 사용자가 이 interface를 통해 로깅 코드를 작성한다.

SLF4J 바인딩(.jar)

SLF4J 인터페이스를 로깅 구현체(Logging Framework)와 연결하는 어댑터 역할을 하는 라이브러리

SLF4J Bridging Modules

(slf4j 이외의) 다른 로깅 API로의 Logger 호출을 SLF4J 인터페이스로 연결(redirect)하여 SLF4J API에 대한 호출인것처럼 하여 대신 처리할 수 있도록 하는 일종의 어댑터 역할을 하는 라이브러리

참고 - facade pattern

image-20220509145938916

여러 개의 클래스가 하나의 역할을 수행할 때, 대표적인 인터페이스만을 다루는 클래스를 두어 원하는 기능을 처리할 수 있게 도와주는 패턴이다.

출처 - https://gmlwjd9405.github.io/2019/01/04/logging-with-slf4j.html

Logback vs Log4J vs Log4J2

log4j

logback

log4j 이후, log4j2 전에 개발된 로깅 프로그램으로 log4j에서 향상된 성능과 필터링 옵션을 제공한다

log4j2

가장 최신에 나온 로깅 프레임워크로 Apache의 log4j의 다음 버전이다.

출처 - https://minkwon4.tistory.com/161