솔솔
[log4j] log4j2.xml 설정 파일의 태그 및 하위 요소 종류와 역할 본문
반응형
📂 log4j2란?
Apache Software Foundation에서 개발한 자바 기반의 로깅 라이브러리로 기존의 Log4j의 개선된 버전이며
애플리케이션 내에서 발생하는 다양한 로그 메시지를 효율적으로 관리하고 출력할 수 있도록 도와준다.
📂 log4j2.xml
Log4j2.xml 설정 파일의 태그 및 하위 요소 종류와 역할
1. Configuration
Log4j 2 설정 파일의 루트 요소
<Configuration status="DEBUG" monitorInterval="1">
속성
status: Log4j 자체의 로그 레벨을 지정합니다 (ERROR, WARN, INFO, DEBUG 등).
monitorInterval: 설정 파일이 변경되었는지 주기적으로 확인하는 시간을 초 단위로 지정.
shutdownHook: JVM이 종료될 때 Log4j 2가 자동으로 정리할지 여부를 지정.
packages: 사용자 정의 구성 요소(예: 사용자 정의 Appender, Layout 등)를 포함하는 패키지를 지정.
2. Properties
전역적으로 사용할 속성을 정의
<Properties>
<property name="LOGS_PATH">/project/log</property>
<Property name="LOG_PATTEN">[%-5level] %d{yyyy-MM-dd HH:mm:ss} [%t] %c{1} - %msg%n</Property>
</Properties>
[하위 요소]
- property: 키-값 쌍으로 속성을 정의합니다. 예를 들어, 로그 파일의 경로나 패턴을 지정할 수 있음.
패턴
%-5level: 로그의 레벨을 5자리를 차지하도록 출력 (INFO, DEBUG 등).
%d{yyyy-MM-dd HH:mm:ss}: 로그의 타임스탬프를 yyyy-MM-dd HH:mm:ss 형식으로 출력.
[%t]: 로그를 발생시킨 스레드 이름을 출력.
%c{1}: 로그를 발생시킨 클래스 이름을 출력.
%msg%n: 로그 메시지를 출력한 후 줄 바꿈.
3. Appenders
로그를 출력할 대상(콘솔, 파일 등)을 정의
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%highlight{%-5p}] %style{%c{1}:%L}{blue} - %m%n"/>
</Console>
<RollingFile name="FilterLogger" append="true">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%highlight{%-5p}] %style{%c{1}:%L}{blue} - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
<DefaultRolloverStrategy max="31">
<Delete basePath="${LOGS_PATH}" maxDepth="1">
<IfAccumulatedFileCount exceeds="31"/>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</Appenders>
[하위 요소]
- Appender: 다양한 종류의 로그 출력 대상. 각 Appender는 고유의 설정을 가질 수 있음.
- [하위 요소]
- Console: 로그를 콘솔에 출력.
- <속성>
- name: Appender의 이름을 지정. 필수 속성
- target: 로그를 출력할 대상 콘솔을 지정
- SYSTEM_OUT → 표준 출력(System.out)에 로그를 출력
- SYSTEM_ERR → 표준 에러(System.err)에 로그를 출력
- [하위요소]
- PatternLayout: 로그 출력 형식을 정의
- RollingFile: 로그를 파일에 기록하며, 특정 조건에서 파일을 새로 생성(롤링)함.
- <속성>
- name: Appender의 이름을 지정. 필수 속성.
- fileName: 기본 로그 파일의 경로를 지정. 필수 속성.
- filePattern: 롤링된 로그 파일의 경로 및 이름 패턴을 지정.
- append: true로 설정하면 기존 파일에 로그를 추가로 기록하고, false로 설정하면 기존 파일을 덮어씀. 기본값은 true.
- [하위요소]
- PatternLayout: 로그 출력 형식을 정의
- DefaultRolloverStrategy: 롤링된 파일의 최대 개수 등을 설정
- Policies: 파일 롤링 정책을 정의
- [하위요소]
- TimeBasedTriggeringPolicy: 지정된 시간 간격에 따라 로그 파일을 롤링
- SizeBasedTriggeringPolicy: 로그 파일의 크기가 일정 크기 이상이 되면 파일을 롤링
- File: 로그를 지정된 파일에 기록함.
- <속성>
- name: Appender의 이름을 지정. 필수 속성.
- fileName: 로그 파일의 경로를 지정. 필수 속성.
- append: true로 설정하면 기존 파일에 로그를 추가로 기록하고, false로 설정하면 기존 파일을 덮어씀. 기본값은 true.
- immediateFlush: true로 설정하면 로그 메시지가 즉시 파일에 기록됨. 성능을 높이기 위해 버퍼링할 수도 있음.
- [하위요소]
- PatternLayout: 로그 출력 형식을 정의
4. Loggers
특정 로거(로그를 기록하는 주체)의 설정을 정의
<Loggers>
<Root level="info">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
[하위 요소]
- Logger: 특정 패키지나 클래스에 대한 로그 설정을 정의
- <속성>
- name: 로거의 이름 또는 대상 클래스/패키지를 지정함.
- level: 로깅 레벨을 지정함 (ERROR, WARN, INFO, DEBUG, TRACE 등).
- additivity: 이 로거의 로그가 상위 로거로 전파되는지를 결정.
- AppenderRef: 이 로거가 사용하는 Appender를 지정.
- Root: 모든 로거의 기본 설정을 정의.