Log4j 정리 (log4j.properties 설정 방법)
by mini_minlog4j.properties 설정
1. 특징
- Log for Java 라는 뜻의 Jakarta-project 에서 Java 를 위한 프로젝트 중 하나로 처음부터 Java 의 예외를 처리하기 위해 설계되었다.
- 속도가 유연하고 최적화 되어있다.
- 계층적인 로그 설정과 처리를 지원한다.
- Thread-Safe 하여 멀티스레드 환경에서 사용해도 안전하다.
- API 를 이용해 직접 구현해도 되고, properties 파일이나 XML 파일을 이용해 추가 설정 파일을 이용할 수도 있다.
- 계층적인 6가지 로그 메시지 레벨을 사용한다. (TRACE, DEBUG, INFO, WARN, ERROR, FATAL)
- 국제화를 지원한다.
2. 동작 구조
1) Logger(Category) : Log4j 에서 지원하는 핵심 클래스다. 로깅이 일어나는 부분을 그룹화하여 필요한 그룹의 로그만 출력하거나 카테고리에 우선순위를 부여한다. 실제 로그 기능을 수행하는 역할을 담당한다.
2) Appender : 로그의 출력 위치를 지정한다. Appender 로 설정 가능한 출력은 콘솔, 파일, OutputStream, java.io.Writer, Email(SMTP), Network 등이 있다.
- ConsoleAppender : 콘솔에 로그 메시지를 출력한다.
- FileAppender : 파일에 로그 메시지를 출력한다.
- RollingFileAppender : 로그의 크기가 지정한 용량 이상이 되면 다른 이름의 파일을 출력한다.
- DailyRollingFileAppender : 하루를 단위로 로그 메시지를 출력한다. (보통 통계용 배치 돌릴 때 쓰는듯)
- SMTPAppender : 로그 메시지를 이메일로 보낸다.
- NTEventLogAppender : 윈도우의 이벤트 로그 시스템에 기록한다.
3) Layout : 로그의 출력 포맷을 지정한다. 단순 텍스트, 포맷 지정한 패턴, HTML 문서 형식을 사용할 수 있다.
- %d : 로그의 기록시간 출력
- %p : 로깅의 레벨 출력
- %F : 로깅이 발생한 프로그램의 파일명 출력
- %M : 로깅이 발생한 메소드의 이름 출력
- %I : 로깅이 발생한 호출지의 정보 출력
- %L : 로깅이 발생한 호출지의 라인수 출력
- %t : 로깅이 발생한 스레드명 출력
- %c : 로깅이 발생한 카테고리 출력
- %C : 로깅이 발생한 클래스명 출력
- %m : 로그 메시지 출력
- %n : 개행 문자 출력
- %% : % 를 출력
- %r : 어플리케이션 시작 이후부터 로깅이 발생한 시점까지의 시간 출력(ms)
- %x : 로깅이 발생한 스레드와 관련된 NDC 를 출력한다.
- %X : 로깅이 발생한 스레드와 관련된 MDC 를 출력한다.
4. 로깅 레벨
- FATAL : 가장 크리티컬한 에러
- ERROR : 일반 에러
- WARN : 에러는 아니지만 주의 표시
- INFO : 일반 정보
- DEBUG : 일반 정보를 상세하게
- TRACE : 경로 추적을 위해 사용
5. 장/단점
1. 프로그램 문제 파악이 용이
2. 빠른 디버깅
3. 로그 이력을 파일이나 DB로 남길 수 있음
4. 효율적인 디버깅 가능
단점.. 로그에 대한 디바이스 입출력으로 런타임 오버헤드 발생.. 로깅 코드로 전체 코드 사이즈 증가..
심한 로그는 혼란 야기.. 성능에도 영향...
#root log 설정
log4j.rootLogger= DEBUG, stdout, file
#Console.log
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold=INFO //
'개발 공부중 > 📑 오류 관리' 카테고리의 다른 글
[MySQL] SQL 오류: Data truncation: Incorrect string value (0) | 2023.03.27 |
---|---|
[오류] crbug/1173575, non-JS module files deprecated. (0) | 2023.01.09 |
Mybatis 오류 (0) | 2023.01.05 |
[스프링 오류] 부적합한 열 : 1111 (0) | 2022.12.21 |
블로그의 정보
개발자 미니민의 개발로그
mini_min