Java에서 로거 사용

Rashmi Patidar 2023년10월12일
Java에서 로거 사용

Java 프로그래밍 언어에서 Logging은 사용자가 특정 클래스에서 생성된 오류를 추적할 수 있도록 하는 API입니다. 로거는 타임스탬프와 타임스탬프가 채워지는 끝점을 추가하여 실시간 로깅 메커니즘을 돕습니다. API는 이벤트 추적을 로그의 기록으로 유지하는 데 도움이 됩니다. 기록은 발생한 문제의 근본 원인을 찾고 나중에 동일한 이벤트를 재생성하는 데 도움이 됩니다.

이 기사에서는 Java 로그를 더 잘 활용하는 방법을 보여줍니다.

Java에서 로거의 기능

로거와 그 기능은 아래 프로그램에서 보여줍니다.

package log_file;

import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;

public class AddLoggerInFile {
  public static void main(String[] args) {
    Logger logger = Logger.getLogger("MyLog");
    FileHandler fileHandler;
    try {
      fileHandler = new FileHandler("src/main/resources/MyLogFile.txt");
      logger.addHandler(fileHandler);
      SimpleFormatter simpleFormatter = new SimpleFormatter();
      fileHandler.setFormatter(simpleFormatter);
      logger.info("Log to test");

    } catch (SecurityException e) {
      logger.info("Exception:" + e.getMessage());
      e.printStackTrace();
    } catch (IOException e) {
      logger.info("IO Exception:" + e.getMessage());
      e.printStackTrace();
    }
    logger.info("Hi In the main class");
  }
}

위의 코드 블록에서 로거는 처음에 인스턴스화됩니다.

클래스는 java.util.logging 패키지에 있습니다. getLoggerLogger 클래스에 있는 정적 메서드로, 주어진 이름의 시스템에 없는 경우 로거를 생성합니다. else 함수는 이미 존재하는 기존 로거 인스턴스를 반환합니다.

주어진 이름이 null 값이면 함수에서 NullPointerException이 발생합니다. 로거 인스턴스가 인스턴스화되면 파일 핸들러 인스턴스가 생성됩니다.

FileHandler 클래스는 java.util.logging 패키지에 있으며 logger 인스턴스를 사용하여 인쇄된 로그를 처리하도록 특별히 설계 및 구성됩니다. 생성자 FileHandler는 주어진 파일 이름에 정보를 기록하도록 핸들러를 초기화합니다. 생성자는 출력 파일의 이름을 매개변수로 사용합니다.

위의 코드에서 상대 경로는 파일 이름과 함께 제공됩니다. 크기는 파일에 정의되어 있지 않습니다. 로그가 들어가는 한도까지 확장될 수 있기 때문입니다. 컴파일러가 파일을 여는 데 문제가 발생하면 생성자가 IOException을 throw합니다. 보안 관리자에 LoggingPermission이 없으면 SecurityException이 발생하고 패턴이 빈 문자열이면 IllegalArgumentException이 발생합니다.

addHandler 메소드는 로깅 메시지를 파일로 수신하도록 파일 핸들러를 매핑합니다. 이 함수는 값을 반환하지 않으므로 void 반환 유형입니다. 대신 로그와 이벤트만 사용합니다. 보안 관리자에 충분한 로깅 권한이 없으면 SecurityException이 발생합니다.

SimpleFormatter 인스턴스가 시작됩니다. 클래스는 java.util.logging 패키지에도 있습니다. 포맷터는 logging.SimpleFormatter.format 속성을 사용하여 로그를 자동 포맷하는 권한을 허용합니다. 이 속성을 사용하면 로그 메시지가 정의된 형식으로 되어 균일성을 유지할 수 있습니다.

setFormatter는 로거 인스턴스에 포맷터를 설정하는 함수입니다. infoINFO 로그 메시지를 파일에 인쇄하기 위해 Logger 클래스에 있는 기능입니다. 레벨 클래스에는 다양한 로그 레벨이 있을 수 있습니다. 용도에 따라 INFO, DEBUG, FINE, CONFIGSEVERE 로그를 사용할 수 있습니다.

로그 수준은 프로그램 로그 심각도를 정의하는 로깅 세부 정보입니다. 레벨에는 정의된 숫자와 지정된 의미가 있습니다. 예를 들어 SEVERE1000의 로그 값을 가지며 시스템의 오류를 나타내며 즉시 처리되어야 합니다.

심각도는 일부 네트워크 오류 또는 데이터베이스 연결이 끊어지면 발생합니다. 유사하게 WARNING 레벨은 900 값을 가지며 시스템의 잠재적 위험을 나타냅니다.

아래는 표준 콘솔 출력과 MyLogFile.txt 파일에 채워지는 출력입니다.

출력:

Jul 04, 2021 12:05:29 AM log_file.AddLoggerInFile main
INFO: Log to test
Jul 04, 2021 12:05:29 AM log_file.AddLoggerInFile main
INFO: Hi In the main class
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

관련 문장 - Java Logging