Log4jdbc
Log4j 를 JDBC와 연결하여 사용하기 위해 만들어진 오픈소스 프로젝트
GitHub - arthurblake/log4jdbc: log4jdbc is a Java JDBC driver that can log SQL and/or JDBC calls (and optionally SQL timing info
log4jdbc is a Java JDBC driver that can log SQL and/or JDBC calls (and optionally SQL timing information) for other JDBC drivers using the Simple Logging Facade For Java (SLF4J) logging system. - G...
github.com
위의 코드는 origin 버전이고, 오래되었다..
심지어 slf4j 2.0.7 로 코드 업그레이드도 진행되어 있다.
Log4j 와 slf4j 가 뭔지 알아보도록 하자.
로깅(Logging)
컴퓨팅에서 로그파일은 운영 체제나 다른 소프트웨어가 실행 중에 발생하는 이벤트나 각기 다른 사용자의 통신 소프트웨어 간의 메세지를 기록한 파일이며, 로그를 기록하는 행위를 로깅이라고 한다.
+) 로그의 종류로.. OS 내 시스템 로그, FW 방화벽 로그, 인증 로그 등 여러 가지가 있는데 Log4j와 slf4j는 프로젝트 내의 로그, 즉 애플리케이션 로그를 다루는 것.
Log4j (Log for Java)
가장 오래된 로깅 프레임워크. Apache의 Java 기반 로깅 프레임 워크.
console 및 file 출력의 형태로 logging을 도와주며, xml, properties로 환경을 구성할 수 있음.
* 2015년 기준으로 개발 중단.
1. 속도와 유연성을 고려하여 디자인. 속도에 최적화되어 있음.
2. 멀티스레드 환경에서 사용해도 안전
3. 계층적인 로그 설정과 처리를 지원
4. 출력을 파일, 콘솔, java.io.OutputStream, java.io.Writer, TCP를 사용하는 원격 서버, 원격 Unix Syslog 데몬, 원격 JMS 구독자, 윈도우NT EventLog로 보낼 수 있고, 심지어는 E-mail로 보내기도 가능.
5. 6계층 형태의 로그 메세지 레벨을 사용
Log4j의 구성
Element | Description |
Logger | 출력할 메세지를 Appender에게 전달 |
Appender | 전달된 로그를 어디에 출력할 것인지 결정 (Console, File, JDBC 등) |
Layout | 로그를 어떤 형식으로 출력할 것인지 결정 |
Log4j의 로그 레벨
Log level | Description |
FATAL | 아주 심각한 에러가 발생한 상태 |
ERROR | 요청을 처리하는 중 문제가 발생한 상태 |
WARN | 실행에는 문제가 없지만 향후 에러의 원인이 될 수 있는 경고성 메세지 |
INFO | 상태 변경과 같은 정보성 메세지 |
DEBUG | 개발 시 디버그 용도로 사용하는 메세지 |
TRACE | 디버그 레벨보다 상세한 이벤트를 나타내는 메세지 |
※ FATAL > ERROR > WARN > INFO > DEBUG > TRAGE
slf4j(Simple Logging Facade for Java)

logger 추상체로써 다른 로깅 프레임워크가 접근할 수 있도록 도와주는 추상화 계층. (자체적인 로깅 프레임워크가 아님)
코드를 일정하게 유지하면서 구현체의 전환을 통해 다른 로깅 프레임워크로의 전환을 쉽고 간단하게 가능하게 함.
=> logback 이나 log4jc와 같은 로깅 프레임워크의 인터페이스 역할.
log4j로 구축된 프로젝트 로깅을 logback 으로 바꿀 때
- slf4j 가 없다면 ) logback 문법으로 전부 컨버팅해야함
- slf4j 가 있다면 ) 지정된 의존성만 바꿔주면 됨.
그러므로, 로깅 프로그램을 도입할 때 slf4j 를 "같이" 도입하는 것을 추천.
log1jdb 사용 방법
사용 방법은 아래의 링크. 공식 페이지를 참고하도록 하자.
maven 기반이냐 gradle 기반이냐에 따른 셋팅이 다르기 때문.
Log4jdbc-log4j2
This project was imported from https://code.google.com/archive/p/log4jdbc-log4j2/ Original License: Apache License 2.0 log4jdbc-log4j2 is a modification of log4jdbc to natively use Log4j 2 (or SLF4J as usual), that supports JDBC 4.1 to JDBC 3, includes all
log4jdbc.brunorozendo.com