log for java
개발하는 단계에서도 많이 활용할 수 있다.
자바에서 로그 기록을 남기는 라이브러리
Log4j를 이용하면 프로그램 실행시, 실행 코드의 수정없이 설정파일을 통해서 로깅작업을 컨트롤 할 수 있다.
Logger계층구조를 이용하면 어떤 로그문을 출력할지 상세하게 컨트롤하기 쉽다
Log4j의 주요 구성요소
- Logger : 로깅 정보를 캡쳐
. 로깅메세지를 appender에 전달(출력할 수 있음 - appender : 어디로 보낼지 역할)
. log4j의 심장부에 위치
. 개발자가 직접 로그 출력 여부를 런타임에 조정
. 로그 레벨을 갖고 있음
- Appender : 다양한 목적지로 로깅 정보를 출력
. 파일, 콘솔, DB 등.. 출력위치 결정
. XXXAppender(ConsoleAppender ,FileAppender, JDBCAppender, SMTPAppender(~이메일)
RollingFileAppender, DailyRollingFileAppender, NTEventAppender 등...)
- layouts : 로깅 정보를 위한 다양한 출력 포맷 구성(어떤 형식으로 출력할것인지)
. 날짜관련 DatePattern있음..
- 로그레벨(6단계)
. TRACE - 레벨이 제일 낮음
. DEBUG : 개발시 디버그 용도로 사용한 메세지
. INFO : 정보메세지 출력 (일반적으로 설정함)
. WARN : (warnning) 경고메세지
. ERROR
. FATAL - 레벨 제일 높음 : 심각한 에러
Log4j 설정 방법
- 사이트에서 라이브러리 파일.jar 파일 설치 -빌드패스에 추가
log4j.rootLogger = info레벨에서 부터 로그를 출력하겠다. stdout 출력(appender), logfile(appender)환경에 맞게 출력
ConsoleAppender
Target=System.out = 콘솔의 기본 출력장치
패턴형식 있음.
DailyRollingFileAppender = 날짜별로 환경을 만들어서 로그 출력
클래스 임포트 - 아파치 제공하는 Logger
로거 객체 만들기
= static Logger logger = Logger.getLogger(Log4jTest.class);
- 콘솔 출력 패턴
TRACE (basic.Log4jTest:14) - 이것은 Log4j의 TRACE레벨의 로그 메세지 입니다.
%5p (%C{2}:%L) - %m%n
5: 는 5자리
p : 로그레벨이름 출력
C : 클래스명 출력(%C{2} : 패키지 구조명 뒤에서 두 단계까지만 씀)
L: 라인 수(소스파일의 줄 번호)
m : 메세지 - 로그내용 출력
n: 줄 바 꿈
- 파일 출력 패턴
[%d{yyyy-MM-dd HH:mm:ss}] %5p (%C{2} - %M:%L) - %m%n
년도시분초 /
M : method이름(현재는 메인메소드)
L : 줄번호
%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)를 출력합니다
'고급JAVA' 카테고리의 다른 글
Servlet 써블릿 (1) | 2023.01.18 |
---|---|
MVC 패턴과 싱글톤(Singleton) 패턴 (0) | 2023.01.11 |
쓰레드 공부-04 : 쓰레드 상태 (0) | 2022.12.27 |
쓰레드 공부-03 : 쓰레드의 실행제어 (0) | 2022.12.27 |
쓰레드 공부-02 (1) | 2022.12.26 |