Esta sección describe la compatibilidad de Message Queue 4.0 con registros de tiempo de ejecución del cliente de sucesos de conexión y eventos relacionados con la sesión
JDK 1.4 (y versiones superiores) incluye la biblioteca java.util.logging. Esta biblioteca implementa una interfaz de registro estándar que puede utilizarse para registros específicos de la aplicación.
El tiempo de ejecución del cliente de Message Queue utiliza Java Logging API para implementar sus funciones de registro. Puede utilizar todos los servicios de registro de J2SE 1.4 para configurar las actividades de registro. Por ejemplo, una aplicación puede utilizar los siguientes servicios de registro de Java para establecer cómo el tiempo de ejecución del cliente de Message Queue debe presentar su información de registro:
Controladores de registro
Filtros de registro
Formateadores de registro
Nivel de registro
Para más información sobre el Java Logging API, consulte la presentación de este producto en http://java.sun.com/j2se/1.4.2/docs/guide/util/logging/overview.html
El proveedor de Message Queue define un conjunto de espacios de nombre de registro asociados a los niveles de registro y a actividades de registro que permiten a los clientes de Message Queue crear un registro de los sucesos de conexión y de sesión siempre que se haya establecido correctamente la configuración de registro.
El espacio del nombre de registro raíz del tiempo de ejecución de Message Queue está definido como javax.jms. Todos los registros del tiempo de ejecución del cliente de Message Queue utilizan este nombre como espacio de nombres padre.
Los niveles de registro del tiempo de ejecución del cliente de Message Queue son los mismos que los definidos en la clase java.util.logging.Level. Esta clase define siete niveles de registro estándar y dos ajustes adicionales que puede utilizar para desactivar y activar el proceso de registro.
Desactiva el registro.
Cuanto mayor es la prioridad, más alto es el valor. Definido por la aplicación.
Definido por la aplicación.
Definido por la aplicación.
Definido por la aplicación.
Definido por la aplicación.
Definido por la aplicación.
Cuanto menor es la prioridad, menor es el valor. Definido por la aplicación.
Activa el registro de todos los mensajes.
En general, las excepciones y los errores que se producen en el tiempo de ejecución del cliente de Message Queue son registrados con el espacio de nombre javax.jms.
Las excepciones que devuelve JVM y que capta el tiempo de ejecución del cliente, como IOException, quedan registradas con el espacio de nombre de registro javax.jms en el nivel WARNING.
Las excepciones de JMS que devuelve el tiempo de ejecución del cliente, como IllegalStateException , quedan registradas con el espacio de nombre de registro javax.jms en el nivel FINER.
Los errores que devuelve JVM y que capta el tiempo de ejecución del cliente, como OutOfMemoryError, quedan registrados con el espacio de nombre de registro javax.jms en el nivel SEVERE.
La siguiente tabla muestra una lista de los sucesos que pueden registrarse y el nivel de registro que debe establecerse en los sucesos de registro para las conexiones de JMS y las sesiones.
La siguiente tabla describe los niveles de registro y los sucesos de conexiones.
Tabla 1–6 Niveles de registro y sucesos para el espacio de nombre javax.jms.connection
Nivel de registro |
Sucesos |
---|---|
FINE |
Conexión creada |
FINE |
Conexión iniciada |
FINE |
Conexión cerrada |
FINE |
Conexión interrumpida |
FINE |
Conexión reanudada |
FINER |
Diversas actividades de conexión como setClientID |
FINEST |
Mensajes, reconocimientos, mensajes de acción y control de Message Queue (como confirmar una transacción) |
Para las sesiones, se deja constancia de la siguiente información en el registro.
Cada registro de un mensaje entregado a un consumidor incluye el ID de la conexión, el ID de la sesión y el ID del consumidor.
Cada registro de un mensaje enviado por un productor incluye el ID de la conexión, el ID de la sesión y el ID del productor, además del nombre del destino.
La siguiente tabla describe los niveles de registro y los sucesos de las sesiones.
Tabla 1–7 Niveles de registro y sucesos para el espacio de nombre javax.jms.session
Nivel de registro |
Suceso |
---|---|
FINE |
Sesión creada |
FINE |
Sesión cerrada |
FINE |
Productor creado |
FINE |
Consumidor creado |
FINE |
Destino creado |
FINER |
Diversas actividades de sesión como confirmar una sesión. |
FINEST |
Mensajes producidos y consumidos. (Las propiedades y los cuerpos de los mensajes no se consignan en los registros.) |
Por defecto, el nivel de registro de salida se hereda del JRE en que se esté ejecutando la aplicación. Compruebe el archivo JRE_DIRECTORY/lib/logging.properties para determinar cuál es el nivel.
Puede configurar el registro de forma programática o mediante archivos de configuración, de forma que pueda controlar el ámbito en que se produce el registro. En las siguientes secciones se describen estas posibilidades.
El siguiente ejemplo muestra cómo establecer espacios de nombre y niveles de registro en el archivo JRE_DIRECTORY/lib/logging.properties, que se utiliza para establecer el nivel de registro del entorno en tiempo de ejecución de Java. Todas las aplicaciones que utilicen este JRE tendrán la misma configuración de registro. El ejemplo de configuración que se muestra abajo establece el nivel de registro en INFO para el espacio de nombre javax.jms.connection y especifica que la salida debe escribirse en java.util.logging.ConsoleHandler .
#registro.archivo de propiedades. # "controladores" especifica una lista separada por comas de clases # de controladores de registro. Estos controladores se instalan durante el inicio de VM. # Tenga en cuenta que estas clases deberán estar en la ruta de clase del sistema. # Por defecto, solo configuramos un ConsoleHandler, que sólo mostrará # mensajes en el nivel INFO y superiores. controladores= java.util.logging.ConsoleHandler # Nivel de registro global predeterminado. # Especifica qué tipo de sucesos se registran en todos los # registros. Es posible anular este nivel global para un recurso # determinado y sustituirlo por un nivel específico para el recurso. # Observe que el ConsoleHandler también tiene una configuración de nivel # independiente para limitar los mensajes que se imprimen en la consola. .nivel= INFO #Limitar los mensajes que se imprimen en la consola a INFO y niveles superiores. java.util.logging.ConsoleHandler.level = INFO java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter # Este registro con espacio de nombre de conexión javax.jms. escribirá # mensajes de nivel INFO en sus controladores de salida. En esta configuración # el controlador de entrada está establecido en java.util.logging.ConsoleHandler. javax.jms.connection.level = INFO
También puede definir un archivo de configuración de registro desde la línea de comandos de Java que utiliza para ejecutar una aplicación. La aplicación utilizará la configuración definida en el archivo de registro especificado. En el siguiente ejemplo, configFile utiliza el mismo formato definido en el archivo JRE_DIRECTORY/lib/logging.properties .
java -Djava.util.logging.config.file=configFile MQApplication
El siguiente código utiliza el API java.util.logging para registrar sucesos de conexión y lo hace cambiando el nivel del espacio de nombre javax.jms.connection a FINE. Puede incluir este código en su aplicación para establecer la configuración de registro de forma programática.
import java.util.logging.*; //construye un controlador de archivo y una salida en el archivo mq.log //del directorio temp del sistema. Handler fh = new FileHandler("%t/mq.log"); fh.setLevel (Level.FINE); //Obtener registrador para el dominio "javax.jms.connection". Logger logger = Logger.getLogger("javax.jms.connection"); logger.addHandler (fh); //el registrador javax.jms.connection registraría las actividades //de nivel FINE y superior. logger.setLevel (Level.FINE);