Log4J란?
Log4j는 JAVA를 위한 신뢰할만한 빠르고 유연한 로깅 프레임워크
로그메시지를 소스 코드 안에 삽입하는 것은 디버깅을 위한 가장 단순 무식한 로깅방법이다.
별도의 디버깅 툴이 제공되지 않는 다면 이 방법이 최선의 방법일 수 도 있다.
Log4j를 이용하면 프로그램 실행 시 실행 코드의 수정 없이 설정파일을 통해서
로깅 작업을 컨트롤 할 수 있다 Log4j의 특별한 기능중 하나는 로거의 상속 개념이다.
Logger 계층구조를 이용하면 어떤 로그문을 출력할지 상세하게 컨트롤하기가 무척 쉬워진다.
Logger : 로깅 정보를 캡쳐
- 로깅 메시지를 Appender에 전달
- log4J의 심장부에 위치
- 개발자가 직접 로그 출력 여부를 런타임에 조정
- logger는 로그 레벨을 가지고 있으며, 로그의 출력 여부는 로그문의 레벨과 로거의 레벨을 가지고 결정
Appender : 다양한 목적지로 로깅 정보를 출력
- 로그의 출력 위치를 결정(파일 콘솔 DB등)
- log4J API문서의 XXXAppender로 끝나는 클래스들의 이름을 보면, 출력 위치를 어느 정도 짐작 가능하다.
- ConsoleAppender(콘솔에 로그 메시지 출력), fileAppender(파일에 로그 메시지 기록),
JDBCAppender(DB에 로그를 출력), JMSAppender 등등
layouts: 로깅 정보를 위한 다양한 출력 포맷 구성
패턴문자:
%p : debug, info, warn, error, fatal 등의 priority 가 출력된다.
%m : 로그내용이 출력됩니다.
%d : 로깅 이벤트가 발생한 시간을 기록합니다.
포맷은 %d{HH:mm:ss, SSS}, %d{yyyy MMM dd HH:mm:ss, SSS}같은 형태로
사용하며 SimpleDateFormat에 따른 포맷팅을 하면 된다.
%t : 로그이벤트가 발생된 쓰레드의 이름을 출력합니다.
%% : % 표시를 출력하기 위해 사용한다.
%n : 플랫폼 종속적인 개행문자가 출력된다. \r\n 또는 \n 일것이다.
%c : 카테고리를 표시합니다
예) 카테고리가 a.b.c 처럼 되어있다면 %c{2}는 b.c가 출력됩니다.
%C : 클래스명을 포시합니다.
예) 클래스구조가 org.apache.xyz.SomeClass 처럼 되어있다면
%C{2}는 xyz.SomeClass 가 출력됩니다
%F : 로깅이 발생한 프로그램 파일명을 나타냅니다.
%l : 로깅이 발생한 caller의 정보를 나타냅니다
%L : 로깅이 발생한 caller의 라인수를 나타냅니다
%M : 로깅이 발생한 method 이름을 나타냅니다.
%r : 어플리케이션 시작 이후 부터 로깅이 발생한 시점의 시간(milliseconds)
%x : 로깅이 발생한 thread와 관련된 NDC(nested diagnostic context)를 출력합니다.
%X : 로깅이 발생한 thread와 관련된 MDC(mapped diagnostic context)를 출력합니다.
고급 자바_0111-1 (0) | 2023.01.11 |
---|---|
고급 자바_0110-1 (1) | 2023.01.11 |
고급 자바_0109-1 (0) | 2023.01.09 |
고급 자바_0106-1 (0) | 2023.01.06 |
고급 자바_0105-1 (0) | 2023.01.05 |