Logging

지종권(JiJongKwon)·2024년 4월 14일
1

디버깅

우리는 프로그래밍을 디버깅 하기위해 출력문을 작성해서 확인했다

자바를 사용한다면 아마 System.out.println()으로 값을 확인하며 디버깅을 진행했을 것이다.

하지만 데이터가 10만개라면 ?

일일이 확인한다는 것은 정말 말도 안된다.

해당 메시지에서 얼마나 심각한 것인지, 또한 상세한 내용인지 확인하기에 너무 어렵다

Slf4j

logging에 필요한 기능을 제공해주는 인터페이스이다.

구현체 logback, log4j, log4j2가 있다

그 중 logback, log4j2를 주로 사용한다, log4j는 보안상 문제가 있어서 사용되지 않는다.

log level

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를 사용해보자 !


참고 : https://deeplify.dev/back-end/spring/logging

0개의 댓글

관련 채용 정보