Java 개발을 하다 보면 로그를 남기기 위해 Log4j2를 사용하는 경우가 많습니다.
하지만 처음 마주하는 log4j2.xml 파일은 마치 외계어처럼 느껴질 수 있죠.
이 글에서는 log4j2.xml의 구조와 설정 방법을 초보자도 이해할 수 있도록 쉽게 설명해드릴게요.
📌 log4j2란?
Log4j2는 Apache에서 만든 강력한 로그 프레임워크로,
애플리케이션에서 일어나는 다양한 이벤트(정보, 오류, 디버그 등)를 파일, 콘솔, DB 등에 기록할 수 있게 해줍니다.
🧱 log4j2.xml의 기본 구조
log4j2는 XML, JSON, YAML 등 다양한 방식으로 설정할 수 있는데,
그중 가장 많이 쓰이는 게 log4j2.xml입니다.
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>...</Appenders>
<Loggers>...</Loggers>
</Configuration>
<Configuration>: 전체 설정의 루트 요소
<Appenders>: 로그 출력 대상 (콘솔, 파일 등)
<Loggers>: 어떤 로그를 남길지, 어떤 Appender를 사용할지 설정
🎯 Appender란?
로그를 어디에 출력할 것인가를 결정합니다.
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger - %msg%n"/>
</Console>
예: 콘솔에 출력
name="Console": Appender 이름
PatternLayout: 로그 출력 포맷
%d: 날짜
%t: 쓰레드
%level: 로그 레벨
%logger: 로거 이름
%msg: 메시지
<File name="MyFile" fileName="logs/app.log">
<PatternLayout pattern="%d %p %c [%t] %m%n"/>
</File>
예: 파일에 로그 저장
fileName: 로그 파일 경로
콘솔과 동일하게 PatternLayout으로 포맷 지정 가능
📢 Logger란?
어떤 클래스 또는 패키지에서 어떤 로그 레벨을 사용할 것인지 설정합니다.
<Loggers>
<Root level="info">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
Root: 전체 프로젝트의 기본 로그 레벨
level="info": info 이상 로그만 출력 (debug 이하 로그는 무시)
<AppenderRef ref="Console">: 어떤 Appender를 쓸지 연결
🔍 개별 로거 설정 예시
<Logger name="com.myapp.service" level="debug" additivity="false">
<AppenderRef ref="MyFile"/>
</Logger>
특정 패키지(com.myapp.service)에만 debug 레벨 로그 출력
additivity="false": 상위 로거(logback처럼 부모-자식 관계 있음)로 로그 전달 안 함
✅ 초보자에게 추천하는 최소 설정 예시
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
📌 이 설정은 콘솔에 info 이상의 로그만 출력하는 가장 기본적인 형태예요.
🧩 마무리 요약
Appender
- 로그를 출력할 대상 (콘솔, 파일 등)
Logger
- 로그를 출력할 위치와 레벨 지정
PatternLayout
- 로그의 출력 형식 설정
level
- 로그 레벨 (trace < debug < info < warn < error < fatal)
Tip!
개발 시엔 debug 또는 trace,
운영 시엔 info 또는 warn 이상으로 설정하는 것이 일반적입니다.
'나의 일 > Log4j' 카테고리의 다른 글
log4j2.xml 설정하기 (0) | 2023.06.14 |
---|