Log4j는 자바 애플리케이션에서 로깅을 관리하기위한 강력한 도구입니다. 로깅이란 애플리케이션 실행 중에 발생하는 이벤트, 오류, 디버그 정보 등을 기록하는 것을 말합니다. 이번 글에서는 Log4j를 사용하여 로깅을 설정하는 방법에 대해 알아보겠습니다.
1. Log4j 라이브러리 추가하기
먼저, 프로젝트에 Log4j 라이브러리를 추가해야 합니다. 이를 위해 다음과 같이 Maven 의존성을 추가하거나, Log4j JAR 파일을 다운로드하여 프로젝트에 추가할 수 있습니다.
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.14.1</version>
</dependency>
2. Log4j 설정 파일 생성하기
Log4j는 설정 파일을 통해 로깅의 동작 방식을 제어합니다. 설정 파일은 log4j2.xml
또는 log4j2.properties
로 저장되어야 하며, 프로젝트의 클래스 패스에 위치해야 합니다.
2.1 XML 설정 파일 예시
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
위의 예시는 로거가 Console
으로 출력을 하며, 로그 포맷은 [시간] [쓰레드명] 로그레벨 클래스명 - 메시지
형태로 설정되어 있습니다. level
속성은 로깅 레벨을 설정하며, info
로 설정된 경우 info
레벨 이상의 로그들만 출력됩니다.
2.2 Properties 설정 파일 예시
status = info
appender.console.type = Console
appender.console.name = Console
appender.console.target = SYSTEM_OUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
rootLogger.level = info
rootLogger.appenderRef.console.ref = Console
위의 예시는 XML 설정 파일과 동일한 동작을 하는 properties 파일입니다.
3. 로깅 사용하기
Log4j 설정이 완료되었다면, 애플리케이션 코드에서 로깅을 사용할 수 있습니다. Log4j의 로깅 레벨에는 TRACE, DEBUG, INFO, WARN, ERROR 등이 있으며, 필요한 로그 레벨에 따라 다음과 같이 로깅을 사용할 수 있습니다.
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class MyApplication {
private static final Logger logger = LogManager.getLogger(MyApplication.class);
public void doSomething() {
logger.info("Something happened!");
logger.error("An error occurred.");
}
}
위의 예시에서는 LogManager.getLogger()
를 사용하여 로거를 가져와서 로깅을 수행합니다. logger.info()
는 INFO 레벨의 로그를 출력하고, logger.error()
는 ERROR 레벨의 로그를 출력하는 것을 확인할 수 있습니다.
이렇게 하면 Log4j를 사용하여 로깅을 설정하고 사용할 수 있습니다. Log4j의 강력한 기능을 이용하여 애플리케이션의 로깅을 효과적으로 관리할 수 있습니다.