English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 기본 튜토리얼

Java 프로세스 제어

Java 배열

Java 동작 객체(I)

Java 동작 객체(II)

Java 동작 객체(III)

Java 예외 처리

Java 목록(List)

Java Queue(큐)

Java Map集合

Java Set集合

Java 입력 출력(I/O)

Java Reader/Writer

Java 다른 주제

Java 로그 (Logging)

이 튜토리얼에서는 예제를 통해 Java 로그 기록 및 그 다양한 구성 요소를 배울 것입니다.

Java는 로그 기록 프로세스를 통해 로그 메시지와 파일을 생성하고 캡처할 수 있게 합니다.

Java에서는 로그 기록에 프레임워크와 API가 필요합니다. Java는 java.util.logging 패키지에서 내장된 로그 기록 프레임워크를 가지고 있습니다.

또한 제3자 프레임워크(예: Log4j, Logback 등을 사용하여 로그 기록.

Java 로그 구성 요소

아래는 Java Logging API (java.util.logging)의 핵심 구성 요소와 지정된 플로우를 보여줍니다.

Java 로그 플로우 차트

1.Logger

Logger 클래스는 로그 기록 메서드를 제공합니다. Logger 클래스에서 객체를 인스턴스화하고 메서드를 호출하여 기록할 수 있습니다.

예제를 들어보겠습니다.

Logger logger = Logger.getLogger("newLoggerName");

Logger类的getLogger()方法用于查找或创建新的Logger。字符串参数定义logger的名称。

여기서는 새로운 Logger 객체를 생성하거나 동일한 이름을 가진 Logger 객체를 반환합니다.

convention에 따라, 현재 클래스 뒤에 class.getName()를 사용하여 Logger를 정의합니다.

Logger logger = Logger.getLogger(MyClass.class.getName());

주의:전달된 이름이 null이면, 이 메서드는 NullPointerException을 투척합니다.

각 Logger는 로그 메시지 중요성을 결정하는 등급을 가지고 있습니다. 다음과 같이 있습니다:7기본 로그 등급:

로그 등급(내림차순)사용
SEVERE심각한 장애
WARNING

경고 메시지, 잠재적인 문제

INFO일반적인 실행 시간 정보
CONFIG구성 정보
FINE

보통의 개발자 정보(트래킹 메시지)

FINER

자세한 개발자 정보(트래킹 메시지)

FINEST

매우 자세한 개발자 정보(트래킹 메시지)

OFF

모든 등급의 로그 기록을 닫기(아무 내용도 포착하지 않음)

ALL

모든 등급의 로그 기록을 열기(모든 내용을 포착)

각 로그 등급은 중요성을 결정하는 데 사용되는 정수 값을 가지고 있습니다. OFF와 ALL이라는 두 가지 특별한 로그 등급을 제외하고.

로그 메시지

기본적으로, 항상 최초 세 가지 로그 등급이 기록됩니다. 다른 등급을 설정하려면 다음과 같은 코드를 사용할 수 있습니다:

logger.setLevel(Level.LogLevel);
// 예제
logger.setLevel(Level.FINE);

이 예제에서는 Level.FINE과 그 이상의 등급만이 로그 기록으로 설정되어 있습니다. 다른 모든 로그 메시지를 제거합니다.

지금은 일기 메시지를 기록하려고 합니다. 이 log() 메서드를 사용합니다.

logger.log(Level.LogLevel, "log message");
// 예제
logger.log(Level.INFO, "This is INFO log level message");

필요한 레벨을 기록하기 위한 몇 가지 약자 메서드가 있습니다.

logger.info("INFO 로그 레벨의 메시지입니다");
logger.warning("WARNING 로그 레벨의 메시지입니다");

그런 다음, 설정된 로그 레벨을 통해 모든 로그 요청이 다음으로 전달됩니다LogRecord.

주의:만약 일기록자의 레벨이 null로 설정되면, 그 레벨은 부모에서 상속됩니다.

2.필터(Filter)

필터(있는 경우)가 LogRecord이 이 로그 기록을 전달할지 여부를 결정합니다. 그 이름에서 알 수 있듯이, 특정 기준에 따라 로그 메시지를 필터링합니다.

만약LogRecord지정된 조건에 따라 기록자에서 로그 처리기로 전달되고, 로그 처리기에서 외부 시스템으로 전달됩니다.

// 필터 설정
logger.setFilter(filter);
// 필터 가져오기
Filter filter = logger.getFilter();

3.처리기(출력 원)

로그 처리기나 추가 프로그램은 다음을 수신합니다LogRecord그리고 다양한 목표로 내보내기

Java SE는 다음과 같이 제공합니다5개의 내장 처리기가 있습니다:

처리기사용
StreamHandler

OutputStream에 기록

ConsoleHandler컨솔에 기록
FileHandler파일에 기록
SocketHandler

원격 TCP 포트에 기록

MemoryHandler메모리에 기록

처리기는LogRecord필터에 전달하여 외부 시스템으로 전달할 수 있는지 다시 확인합니다.

새로운 처리기를 추가하려면 다음 코드를 사용합니다:

logger.addHandler(handler);
// 예제
Handler handler = new ConsoleHandler();
logger.addHandler(handler);

처리기를 제거하려면 다음 코드를 사용합니다:

logger.removeHandler(handler);
// 예제
Handler handler = new ConsoleHandler();
logger.addHandler(handler);
logger.removeHandler(handler);

한 기록자는 여러 처리기를 가질 수 있습니다. 모든 처리기를 가져오기 위해 다음 코드를 사용합니다:

Handler[] handlers = logger.getHandlers();

4.정렬 프로그램(Formatter)

처리기는 다음과 같이 사용할 수 있습니다Formatter적용LogRecord객체정렬문자열로 변환한 후 외부 시스템으로 내보내기

Java SE에 두 가지 내장된Formatter

포맷 프로그램사용
SimpleFormatter

LogRecord을 문자 형식으로 포맷합니다

XMLFormatter

LogRecord을 XML 형식으로 포맷합니다

다음 코드를 사용하여 처리기를 포맷할 수 있습니다:

// 문자 형식으로 포맷합니다
handler.setFormatter(new SimpleFormatter());
// XML 형식으로 포맷합니다
handler.setFormatter(new XMLFormatter());

로그 관리자

로그 관리객체 추적의 글로벌 기록 정보를 읽고 유지합니다. 이는 로그 기록 설정과 레코드 인스턴스를 유지합니다.

로그 관리자는 싱글턴입니다. 이는 단 한 개의 인스턴스가 생성된다는 의미입니다.

로그 관리자 인스턴스를 얻으려면 다음 코드를 사용합니다:

LogManager manager = new LogManager();

로그의 장점

Java 로그 사용의 몇 가지 장점입니다.

  • 프로그램의 흐름을 모니터링하는 데 도움을 줍니다

  • 가능한 모든 오류를 캡처하는 데 도움을 줍니다

  • 문제 진단 및 디버깅을 지원합니다