System.out.println으로 부터 벗어나게 해주는 library가 있습니다. 바로 Log4j2입니다.
참고로 Log4j2의 부모 격인 Log4j는 2021년 12월 취약점이 발견되었습니다. Log4j는 공격자가 특정 메세지를 입력하면 컴퓨터 권한을 탈취할 수도 있습니다. 그러므로 반드시 Log4J2를 사용하도록 합니다.
dependencies {
implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.17.2'
implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.17.2'
implementation group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.17.2'
}
경로는 src > main > resources > log4j2.xml
<?xml version="1.0" encoding="UTF-8" ?>
<Configuration status="WARN">
<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>
@Log4j2 어노테이션을 추가합니다.
Log4j2는 다양한 수준의 로그 메시지를 기록할 수 있는 다양한 메소드를 제공합니다. 가장 일반적인 메소드는 다음과 같습니다.
log.info(): 일반 정보를 기록합니다.
log.debug(): 디버깅 정보를 기록합니다.
log.warn(): 경고 메시지를 기록합니다.
log.error(): 오류 메시지를 기록합니다.
log.fatal(): 치명적인 오류 메시지를 기록합니다.
@Log4j2
class Log4J2Test {
@Test
public void Log4J2Test() {
log.info("Log4J2 @@@");
}
}