본문 바로가기
[ Concept ]

[ Concept] Logger의 개념

by 환이s 2023. 6. 18.


팀 프로젝트 진행 중 Logger에 대해 질문하시는 분들이 계셔서 개념 및 간단한 사용 예제를 통해서 알아보려고 합니다.

 

인텔리제이를 사용하시는 분들은 Logger를 사용하지 않고 Debug 모드 설정해서 하시면 되지만, 이클립스를 사용하시는 분들이라면 별도로 제공되는 서비스가 없다 보니 Logger를 사용하시는 게 좋습니다.

 

 

Logger란?

 

'logger'는 소프트웨어 개발에서 로깅(logging)을 위해 사용되는 도구 또는 라이브러리입니다.

 

로깅은 애플리케이션의 실행 중에 발생하는 이벤트, 상태, 오류 등의 정보를 기록하는 작업을 말합니다. 

이러한 로그는 애플리케이션의 동작을 추적하고 디버깅, 모니터링, 성능 분석 등 다양한 목적으로 사용됩니다.

 

일반적으로 로그는 파일, 데이터베이스, 콘솔 등에 저장될 수 있으며, 애플리케이션의 설정에 따라 다양한 로그 레벨을 설정할 수 있습니다.

 

로그 레벨에는 다음과 같은 종류가 있을 수 있습니다.

 

  • Trace : 가장 상세한 로그 레벨로, 애플리케이션의 실행 흐름을 자세히 추적합니다.

 

  • Debug : 디버깅 목적으로 사용되며, 개발 중에만 필요한 정보를 포함합니다.

 

  • Info : 애플리케이션의 주요 이벤트나 상태를 나타냅니다.

 

  • Warn : 경고 메시지로, 잠재적인 문제를 나타냅니다.

 

  • Error : 오류가 발생한 경우를 나타냅니다.

 

  • Fatal : 치명적인 오류로, 애플리케이션의 실행을 중단시킬 수 있는 오류를 나타냅니다.

 

'logger'는 이러한 로그 레벨에 따라 메시지를 기록하고, 필터링하며, 저장하는 기능을 제공합니다.

일반적으로 로그 메시지에는 발생한 이벤트 또는 상태에 대한 설명이 포함되며, 추가로 시간 정보, 스레드 정보, 위치 정보 등을 함께 기록할 수도 있습니다.

 

로깅은 애플리케이션의 안정성과 유지보수를 위해 중요한 역할을 합니다. 

로그를 적절하게 활용하면 애플리케이션의 문제를 식별하고 해결하는 데 도움이 되며, 운영 환경에서의 모니터링과 성능 향상에도 기여할 수 있습니다.

 

다음은 로거를 사용하는 방법의 예시입니다.

 

예제 코드 

 

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class MyClass {
    // Create a logger instance for the class
    private static final Logger logger = LogManager.getLogger(MyClass.class);

    public void myMethod() {
        // Log different levels of messages
        logger.trace("This is a trace message");
        logger.debug("This is a debug message");
        logger.info("This is an info message");
        logger.warn("This is a warning message");
        logger.error("This is an error message");
        logger.fatal("This is a fatal message");

        // Log a message with exception stack trace
        try {
            int result = 10 / 0; // Throws an exception
        } catch (Exception e) {
            logger.error("An exception occurred", e);
        }
    }
}

 

위 코드는 Log4j 라이브러리에서 필요한 클래스를 가져옵니다.

메서드를 사용하여 로거 인스턴스를 만들고 'LogManager.getLogger()' 클래스 이름을 매개 변수로 전달합니다.

'trace', 'debug', 'info', 'warn', 'error' 및 다양한 수준에서 메시지를 기록할 수 있습니다.

 

로거 메서드는 메시지를 첫 번째 매개변수로 승인하고 예외 객체에 대한 선택적 두 번째 매개 변수를 승인할 수도 있습니다. 이를 통해 필요한 경우 예외의 스택 추적과 함께 메시지를 기록할 수 있습니다.

 

TIP)

Logger가 올바르게 작동하려면 프로젝트에 Log4j 라이브러리와 해당 구성이 올바르게 설정이 되어 있는지 확인해야 합니다..!

 


마치며

 

오늘은 Logger에 대해서 알아봤습니다.

Logger 활용에 능숙해지면 코딩 시간 감소에 영향력이 커집니다.

다음 포스팅에서 뵙겠습니다.

 

 

 

728x90