우리는 프로그래밍을 디버깅 하기위해 출력문을 작성해서 확인했다
자바를 사용한다면 아마 System.out.println()으로 값을 확인하며 디버깅을 진행했을 것이다.
하지만 데이터가 10만개라면 ?
일일이 확인한다는 것은 정말 말도 안된다.
해당 메시지에서 얼마나 심각한 것인지, 또한 상세한 내용인지 확인하기에 너무 어렵다
logging에 필요한 기능을 제공해주는 인터페이스이다.
구현체 logback, log4j, log4j2가 있다
그 중 logback, log4j2를 주로 사용한다, log4j는 보안상 문제가 있어서 사용되지 않는다.
trace > debug > info > warn > error
순으로 중요도를 알려준다.
개발과정에서는 trace, debug를 사용하고
운영과정에서는 info, warn, error를 사용한다.
어떻게 ?
→ 사용자 설정을 통해서 level을 조정할 수 있다.
# xml 파일
<?xml version="1.0" encoding="UTF-8" ?>
<Configuration status="INFO">
<Properties>
# 패턴을 설정해서 내 입맛대로 로그를 찍을 수 있음
<Property name="LOG_PATTERN">%d{HH:mm:ss.SSSZ} [%t] %-5level %logger{36} - %msg%n</Property>
</Properties>
<Appenders>
# console에 찍겠다는 의미
<Console name="ConsoleLog" target="SYSTEM_OUT">
<PatternLayout pattern="${LOG_PATTERN}" charset="UTF-8"/>
</Console>
</Appenders>
<Loggers>
# 여기에서 level를 설정하면 됨
# 현재는 info - warn - error만 출력되고 나머지는 출력안됨
<Root level="info">
<AppenderRef ref="ConsoleLog" />
<AppenderRef ref="FileLog" />
</Root>
</Loggers>
</Configuration>
이런식으로 사용자에 입맛에 맞게 설정할 수 있다.
시간, 발생 클래스, 레벨, 메시지 등 다양하게 설정이 가능하다.
난 그냥 기존 설정을 사용해서 테스트를 진행해 보겠다
@Slf4j 어노테이션을 추가하면 사용이 가능하다
@Slf4j
public class LoggingTest {
public static void main(String[] args) {
log.info("logging test info");
}
}
출력
17:46:32.274 [main] INFO log.logtest.LoggingTest -- logging test info
이제 앞으로 sout은 버리고 log를 사용해보자 !