Sun Java System Message Queue 4.1 릴리스 노트

클라이언트 런타임 로깅

이 절에서는 Message Queue 4.0의 연결 및 세션 관련 이벤트에 대한 클라이언트 런타임 로깅 지원에 대해 설명합니다.

JDK 1.4 이상 버전에는 java.util.logging 라이브러리가 포함되어 있습니다. 이 라이브러리는 응용 프로그램 특정 로깅에 사용할 수 있는 표준 로거 인터페이스를 구현합니다.

Message Queue 클라이언트 런타임은 Java 로깅 API를 사용하여 로깅 기능을 구현합니다. 모든 J2SE 1.4 로깅 기능을 사용하여 로깅 작업을 구성할 수 있습니다. 예를 들어, 응용 프로그램은 다음과 같은 Java 로깅 기능을 사용하여 Message Queue 클라이언트 런타임이 해당 로깅 정보를 출력하는 방법을 구성할 수 있습니다.

Java 로깅 API에 대한 자세한 내용은 http://java.sun.com/j2se/1.4.2/docs/guide/util/logging/overview.html의 Java Logging Overview를 참조하십시오.

로깅 이름 공간, 수준 및 작업

Message Queue 공급자는 로깅 구성을 적절하게 설정한 경우 Message Queue 클라이언트가 연결 및 세션 이벤트를 기록할 수 있도록 해주는 로깅 수준 및 로깅 작업과 연관된 로깅 이름 공간 집합을 정의합니다.

Message Queue 클라이언트 런타임의 루트 로깅 이름 공간은 javax.jms로 정의됩니다. Message Queue 클라이언트 런타임의 모든 로거에서 이 이름을 부모 이름 공간으로 사용합니다.

Message Queue 클라이언트 런타임에 사용되는 로깅 수준은 java.util.logging.Level 클래스에 정의된 로깅 수준과 동일합니다. 이 클래스는 7개의 표준 로그 수준과 로깅 기능을 활성화 및 비활성화하는 데 사용할 수 있는 2가지 추가 설정을 정의합니다.

OFF

로깅을 비활성화합니다.

SEVERE

최고 우선 순위로 가장 높은 값입니다. 응용 프로그램에서 정의됩니다.

WARNING

응용 프로그램에서 정의됩니다.

INFO

응용 프로그램에서 정의됩니다.

CONFIG

응용 프로그램에서 정의됩니다.

FINE

응용 프로그램에서 정의됩니다.

FINER

응용 프로그램에서 정의됩니다.

FINEST

최저 우선 순위로 가장 낮은 값입니다. 응용 프로그램에서 정의됩니다.

ALL

모든 메시지 로깅을 활성화합니다.

일반적으로 Message Queue 클라이언트 런타임에서 발생한 예외 및 오류는 이름 공간이 javax.jms인 로거에서 기록합니다.

다음에 나오는 표에는 JMS 연결 및 세션에 대한 이벤트를 기록하기 위해 설정해야 하는 로그 수준과 기록할 수 있는 이벤트가 나열되어 있습니다.

다음 표에서는 연결에 대한 로그 수준과 이벤트에 대해 설명합니다.

표 1–6 javax.jms.connection 이름 공간에 대한 로그 수준 및 이벤트

로그 수준 

이벤트 

FINE

연결 생성 

FINE

연결 시작 

FINE

연결 닫힘 

FINE

연결 끊어짐 

FINE

다시 연결됨 

FINER

setClientID와 같은 기타 연결 작업

FINEST

메시지, 확인, Message Queue 작업 및 제어 메시지(예: 트랜잭션 완결) 

세션의 경우에는 다음 정보가 로그 레코드에 기록됩니다.

다음 표에서는 세션에 대한 로그 수준과 이벤트에 대해 설명합니다.

표 1–7 javax.jms.session 이름 공간에 대한 로그 수준 및 이벤트

로그 수준 

이벤트 

FINE

세션 생성 

FINE

세션 닫힘 

FINE

생성자 생성 

FINE

사용자 생성 

FINE

대상 생성 

FINER

세션 완결과 같은 기타 세션 작업 

FINEST

메시지 생성 및 사용(메시지 등록 정보 및 본문은 로그 레코드에 기록되지 받습니다.) 

기본적으로 출력 로그 수준은 응용 프로그램이 실행 중인 JRE에서 상속됩니다. 해당 수준을 확인하려면 JRE_DIRECTORY/lib/logging.properties 파일을 확인하십시오.

프로그래밍 방식이나 구성 파일을 사용하여 로깅을 구성할 수 있고 로깅의 범위를 제어할 수 있습니다. 다음 절에서는 이러한 작업에 대해 설명합니다.

JRE 로깅 구성 파일 사용

다음 예는 Java 런타임 환경의 로그 수준을 설정하는 데 사용되는 JRE_DIRECTORY/lib/logging.properties 파일에 로깅 이름 공간 및 수준을 설정하는 방법을 나타냅니다. 이 JRE를 사용하는 모든 응용 프로그램에는 동일한 로깅 구성이 있습니다. 다음의 예제 구성은 javax.jms.connection 이름 공간에 대해 로깅 수준을 INFO로 설정하며 출력을 java.util.logging.ConsoleHandler에 기록할 것을 지정합니다.

#logging.properties file.
# "handlers" specifies a comma separated list of log Handler 
# classes. These handlers will be installed during VM startup.
# Note that these classes must be on the system classpath.
# By default we only configure a ConsoleHandler, which will only
# show messages at the INFO and above levels.

	handlers= java.util.logging.ConsoleHandler

# Default global logging level.
# This specifies which kinds of events are logged across
# all loggers. For any given facility this global level
# can be overriden by a facility-specific level.
# Note that the ConsoleHandler also has a separate level
# setting to limit messages printed to the console.

    .level= INFO

# Limit the messages that are printed on the console to INFO and above.

    java.util.logging.ConsoleHandler.level = INFO
    java.util.logging.ConsoleHandler.formatter = 
                                    java.util.logging.SimpleFormatter

# The logger with javax.jms.connection name space will write
# Level.INFO messages to its output handler(s). In this configuration 
# the ouput handler is set to java.util.logging.ConsoleHandler.

    javax.jms.connection.level = INFO

특정 응용 프로그램에 대한 로깅 구성 파일 사용

응용 프로그램을 실행하는 데 사용하는 java 명령줄에서 로깅 구성 파일을 정의할 수도 있습니다. 응용 프로그램은 지정한 로깅 파일에 정의된 구성을 사용합니다. 다음 예에서 configFileJRE_DIRECTORY/lib/logging.properties 파일에 정의된 형식과 동일한 형식을 사용합니다.

java -Djava.util.logging.config.file=configFile MQApplication

프로그래밍 방식으로 로깅 구성 설정

java.util.logging API를 사용하는 다음 코드는 javax.jms.connection 이름 공간 로그 수준을 FINE으로 변경하여 연결 이벤트를 기록합니다. 이러한 코드를 응용 프로그램에 포함시킴으로써 프로그래밍 방식으로 로깅 구성을 설정할 수 있습니다.

import java.util.logging.*;
//construct a file handler and output to the mq.log file 
//in the system's temp directory.

    Handler fh = new FileHandler("%t/mq.log");
    fh.setLevel (Level.FINE);

//Get Logger for "javax.jms.connection" domain.

    Logger logger = Logger.getLogger("javax.jms.connection");
    logger.addHandler (fh);

//javax.jms.connection logger would log activities   
//with level FINE and above.

    logger.setLevel (Level.FINE);