반응형
Log4j는 Log for Java라는 말로 풀이하여 이름을 지었고 자카르타 프로젝트에서 자바를 위한 프로젝트 중 하나라고 한다.
프로그래밍을 하다보면 오류가 났을 때 많은 시간을 투자하게 된다. 변수의 값을 확인하기 위해 System.out.println을 남발하여 애를 먹은 적도 있다.
Log4j는 이러한 시간을 절약해준다. 시간, 오류메시지, 클래스명, 메서드명, 라인수 등 자세한 오류 및 프로세스 흐름을 알려주기 때문이다.
Log4j의 구조
Log4j의 구조는 크게 세 가지로 나뉜다.
1. Logger
- 로그 파일을 작성하고, Appender에 메시지를 전달하는 기능을 한다.
- 로그 레벨을 가지고 있으며, 로그의 출력 여부는 로그문의 레벨과 로거의 레벨을 가지고 결정한다.
2. Appender
- 로그를 출력하는 위치를 지정한다.
- ConsoleAppender : 콘솔에 로그 메시지를 출력
- FileAppender : 파일에 로그 메시지를 출력
- RollingFileAppender : 로그의 크기가 지정된 용량 이상이 되면 다른 이름의 파일로 출력
3. Layout
- Appender로 출력되는 메시지를 어떤 형식으로 출력할 것인지 출력 layout을 결정한다.
- %d : 로그의 기록 시간 출력
- %p : 로그의 우선순위 출력
- %F : 로깅이 발생한 프로그램 파일명 출력
- %M : 로깅이 발생한 메서드의 이름 출력
- %L : 로깅이 발생한 호출자의 라인수 출력
- %m : 로그 메시지 출력
- % : n개행 문자를 출력
Log4j Level
- FATAL : 심각한 오류가 일어났을 때 사용(일반적으로는 어플리케이션에서는 사용할 일이 없다)
- ERROR : 일반적인 오류가 일어났을 때 사용(요청을 처리하는 도중 문제가 발생한 상태)
- WARN : 처리 가능한 문제이지만, 향후 시스템 에러의 원인이 될 수 있는 경고성 메시지
- INFO : 일반 정보(로그인, 상태변경)와 같은 정보성 메시지
- DEBUG : 개발시 디버그 용도로 사용한 메시지
* FATAL > ERROR > WARN > INFO > DEBUG
만약, DEBUG 레벨로 했다면 INFO ~ FATAL까지 모두 로깅이 된다.
반응형
'Programming > Java' 카테고리의 다른 글
[Java] 메서드 정적 바인딩과 동적 바인딩 (0) | 2020.07.05 |
---|---|
[Java] 참조형식과 호출되는 메서드의 관계 (0) | 2020.07.04 |
[JAVA] 날짜와 시간 다루기(java.time) (0) | 2019.11.09 |
[JAVA] TCP 통신 소켓 프로그래밍(양방향 통신) (0) | 2019.08.02 |
[JAVA] TCP 통신 소켓 프로그래밍(단방향 통신) (0) | 2019.08.02 |