본문 바로가기
나의 일/Log4j

Java 로그 설정의 핵심, log4j2.xml 완전 초보 가이드

by welovex2 2025. 4. 17.


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 이상으로 설정하는 것이 일반적입니다.

728x90

'나의 일 > Log4j' 카테고리의 다른 글

log4j2.xml 설정하기  (0) 2023.06.14