산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

자바 로깅

자바 로깅

이 자습서에서는 예제를 통해 Java Logging 및 다양한 구성 요소에 대해 알아봅니다.

Java를 사용하면 로깅 프로세스를 통해 로그 메시지와 파일을 만들고 캡처할 수 있습니다.

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

Log4j, Logback 등과 같은 타사 프레임워크를 로깅 목적으로 사용할 수도 있습니다.

<시간>

자바 로깅 구성요소

아래 그림은 Java Logging API(java.util.logging)의 핵심 구성 요소와 제어 흐름을 나타냅니다. ).

<그림>

1. 로거

Logger 클래스는 로깅을 위한 메서드를 제공합니다. Logger에서 개체를 인스턴스화할 수 있습니다. 클래스를 만들고 로깅 목적으로 해당 메서드를 호출합니다.

예를 들어보겠습니다.

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

getLogger() Logger 메소드 클래스는 새로운 Logger을 찾거나 생성하는 데 사용됩니다. . 문자열 인수는 로거의 이름을 정의합니다.

여기에 새로운 Logger이 생성됩니다. 개체 또는 기존 Logger 반환 같은 이름으로.

Logger을 정의하는 규칙입니다. class.getName()를 사용하는 현재 클래스 뒤 .

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

참고: 이 메서드는 NullPointerException을 발생시킵니다. 전달된 이름이 null인 경우 .

Logger 로그 메시지의 중요도를 결정하는 수준이 있습니다. 7가지 기본 로그 수준이 있습니다.

로그 수준(내림차순) 사용
심각함 심각한 실패
경고 경고 메시지, 잠재적인 문제
정보 일반 런타임 정보
구성 구성 정보
좋음 일반 개발자 정보(추적 메시지)
더 미세 자세한 개발자 정보(추적 메시지)
최상 매우 상세한 개발자 정보(추적 메시지)
꺼짐 모든 수준에 대한 로깅 끄기(아무것도 캡처하지 않음)
전체 모든 수준에 대한 로깅 켜기(모든 항목 캡처)

각 로그 수준에는 두 가지 특수 로그 수준 OFF을 제외하고 심각도를 결정하는 정수 값이 있습니다. 및 ALL .

<시간>

메시지 로깅

기본적으로 상위 3개 로그 수준이 항상 기록됩니다. 다른 수준을 설정하려면 다음 코드를 사용할 수 있습니다.

logger.setLevel(Level.LogLevel);

// example
logger.setLevel(Level.FINE);

이 예에서는 레벨 FINE만 그리고 그 위의 레벨은 기록되도록 설정됩니다. 다른 모든 로그 메시지는 삭제됩니다.

이제 메시지를 기록하기 위해 log()를 사용합니다. 방법.

logger.log(Level.LogLevel, "log message");

// example
logger.log(Level.INFO, "This is INFO log level message");

원하는 수준에서 로깅하는 약식 방법이 있습니다.

logger.info( "This is INFO log level message");
logger.warning( "This is WARNING log level message");

설정된 로그 수준을 통과한 모든 로그 요청은 LogRecord로 전달됩니다. .

참고: 로거의 레벨이 null로 설정된 경우 , 해당 레벨은 상위 트리에서 상속되는 식으로 계속됩니다.

<시간>

2. 필터

필터(있는 경우)는 LogRecord 전달해야 할지 말아야 할지. 이름에서 알 수 있듯이 특정 기준에 따라 로그 메시지를 필터링합니다.

LogRecord 지정된 기준을 통과하는 경우에만 로거에서 로그 핸들러로, 로그 핸들러에서 외부 시스템으로만 전달됩니다.

// set a filter
logger.setFilter(filter);

// get a filter
Filter filter = logger.getFilter();
<시간>

3. 핸들러(어펜더)

로그 핸들러 또는 어펜더는 LogRecord를 수신합니다. 다양한 대상으로 내보냅니다.

Java SE는 5개의 내장 핸들러를 제공합니다.

처리기 사용
StreamHandler OutputStream에 씁니다.
ConsoleHandler 콘솔에 쓰기
FileHandler 파일에 쓰기
SocketHandler 원격 TCP 포트에 쓰기
MemoryHandler 메모리에 쓰기

핸들러는 LogRecord를 전달할 수 있습니다. 외부 시스템으로 전달할 수 있는지 여부를 다시 결정하기 위해 필터에 전달합니다.

새 핸들러를 추가하려면 다음 코드를 사용합니다.

logger.addHandler(handler);

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

핸들러를 제거하려면 다음 코드를 사용합니다.

logger.removeHandler(handler);

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

로거에는 여러 핸들러가 있을 수 있습니다. 모든 핸들러를 얻으려면 다음 코드를 사용합니다.

Handler[] handlers = logger.getHandlers();
<시간>

4. 포맷터

핸들러는 포매터도 사용할 수 있습니다. LogRecord 포맷하기 개체를 외부 시스템으로 내보내기 전에 문자열로 변환합니다.

Java SE에는 두 개의 내장 포맷터가 있습니다. :

포매터 사용
SimpleFormatter 형식 LogRecord 문자열로
XMLFormatter 형식 LogRecord XML 형식으로

다음 코드를 사용하여 핸들러를 형식화할 수 있습니다.

// formats to string form
handler.setFormatter(new SimpleFormatter());

// formats to XML form
handler.setFormatter(new XMLFormatter());
<시간>

로그 관리자

로그 관리자 객체는 전역 로깅 정보를 추적합니다. 로깅 구성과 로거 인스턴스를 읽고 유지합니다.

로그 관리자는 싱글톤이며, 이는 하나의 인스턴스만 인스턴스화됨을 의미합니다.

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

LogManager manager = new LogManager();
<시간>

로깅의 장점

다음은 Java 로그인의 장점 중 일부입니다.


java

  1. 자바 연산자
  2. 자바 주석
  3. 자바 for-each 루프
  4. 자바 문자열
  5. 자바 인터페이스
  6. 자바 익명 클래스
  7. 자바 리소스 사용
  8. 자바 주석
  9. 자바 어설션
  10. 자바 벡터