java
이 자습서에서는 예제를 통해 Java Logging 및 다양한 구성 요소에 대해 알아봅니다.
Java를 사용하면 로깅 프로세스를 통해 로그 메시지와 파일을 만들고 캡처할 수 있습니다.
Java에서 로깅에는 프레임워크와 API가 필요합니다. Java에는 java.util.logging
에 내장된 로깅 프레임워크가 있습니다. 패키지.
Log4j, Logback 등과 같은 타사 프레임워크를 로깅 목적으로 사용할 수도 있습니다.
<시간>
아래 그림은 Java Logging API(java.util.logging
)의 핵심 구성 요소와 제어 흐름을 나타냅니다. ).
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
로 설정된 경우 , 해당 레벨은 상위 트리에서 상속되는 식으로 계속됩니다.
필터(있는 경우)는 LogRecord 전달해야 할지 말아야 할지. 이름에서 알 수 있듯이 특정 기준에 따라 로그 메시지를 필터링합니다.
LogRecord 지정된 기준을 통과하는 경우에만 로거에서 로그 핸들러로, 로그 핸들러에서 외부 시스템으로만 전달됩니다.
// set a filter
logger.setFilter(filter);
// get a filter
Filter filter = logger.getFilter();
<시간> 로그 핸들러 또는 어펜더는 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();
<시간> 핸들러는 포매터도 사용할 수 있습니다. 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
자바 데크 인터페이스 이 튜토리얼에서는 Deque 인터페이스, 사용 방법 및 방법에 대해 알아봅니다. Deque Java 컬렉션 프레임워크의 인터페이스는 양방향 대기열의 기능을 제공합니다. Queue를 확장합니다. 인터페이스. 데크 작업 일반 대기열에서 요소는 뒤쪽에서 추가되고 앞쪽에서 제거됩니다. 그러나 deque에서는 전면과 후면 모두에서 요소를 삽입 및 제거할 수 있습니다. . Deque를 구현하는 클래스 Deque의 기능을 사용하려면 인터페이스를 구현하는 클래스를 사용해야 합니다. 배열 데크 링크드리스트
자바 링크드리스트 이 튜토리얼에서는 예제를 통해 Java LinkedList에 대해 자세히 알아볼 것입니다. LinkedList Java 컬렉션 프레임워크의 클래스는 연결 목록 데이터 구조(이중 연결 목록)의 기능을 제공합니다. 연결 목록의 각 요소를 노드라고 합니다. . 3개의 필드로 구성됩니다. 이전 - 목록에 있는 이전 요소의 주소를 저장합니다. null입니다. 첫 번째 요소 다음 - 목록에서 다음 요소의 주소를 저장합니다. null입니다. 마지막 요소 데이터 - 실제 데이터 저장 자바 LinkedList 생성