java java.util.logging

¿Dónde almacena java.util.logging.Logger su registro?



(3)

Esta podría ser una pregunta estúpida, pero estoy un poco perdido con Java Logger

private static Logger logger = Logger.getLogger("order.web.OrderManager"); logger.info("Removed order " + id + ".");

¿Dónde veo el registro? También esta cita de la biblioteca java.util.logging.Logger:

En cada llamada de registro, el registrador realiza inicialmente una comprobación económica del nivel de solicitud (por ejemplo, SEVERE o FINE) contra el nivel de registro efectivo del registrador. Si el nivel de solicitud es inferior al nivel de registro, la llamada de registro vuelve inmediatamente.
Después de pasar esta prueba inicial (económica), el registrador asignará un LogRecord para describir el mensaje de registro. Luego llamará a un filtro (si está presente) para que verifique más detalladamente si el registro debe publicarse. Si eso pasa, publicará LogRecord en sus controladores de salida.

¿Esto significa que si tengo 3 registros de request level ?

logger.log(Level.FINE, "Something"); logger.log(Level.WARNING, "Something"); logger.log(Level.SEVERE, "Something");

Y mi log level es SEVERE, puedo ver los tres registros y si mi log level es WARNING, entonces no puedo ver el registro SEVERE, ¿es correcto? ¿Y cómo configuro el log level ?


¿Dónde veo el registro?

En un archivo de registro o salida estándar, dependiendo de la configuración real del controlador de registro. Esto se puede establecer a través de un archivo de propiedades o directamente a través de la API de registro.

¿Esto significa que si tengo 3 registros de nivel de solicitud ...

SEVERE es la más importante (prioridad más alta) y FINE es el tipo de mensaje menos importante de los 3 que se muestran en su ejemplo. Por lo tanto, si su nivel de registro es SEVERE , solo se registrarán los mensajes SEVERE . Si el nivel es FINE , se registran los 3 mensajes.

Esto es muy útil cuando se está en un entorno de producción real, es posible que desee registrar solo los errores y posiblemente las advertencias (que, afortunadamente, son bastante raras, pero desea conocerlas), de modo que puede establecer el nivel de registro en WARNING . Sin embargo, en su entorno de desarrollo, cuando, por ejemplo, la depuración de un problema, desea ver toda la información en los registros, a pesar de que crea una gran cantidad de datos de registro y ralentiza la aplicación. Así que establece el nivel de registro en FINE o FINEST .

Aquí hay una buena introducción al registro de Java .

Actualización: un ejemplo simple de la página anterior para configurar el registrador para que se registre en un archivo en el nivel FINEST :

Handler fh = new FileHandler("%t/wombat.log"); Logger.getLogger("").addHandler(fh); Logger.getLogger("com.wombat").setLevel(Level.FINEST);

Para iniciar sesión en la consola, reemplace FileHandler anterior con ConsoleHandler :

Handler ch = new ConsoleHandler(); Logger.getLogger("").addHandler(ch);

Sin embargo, esto es solo un ejemplo: en una aplicación real, es preferible configurar el registro a través de un archivo de propiedades config.


A dónde va depende de tu configuración. Hay detalles sobre esto en los documentos de API. El nivel de registro es el reverso exacto de lo que dijiste. Si tiene una configuración de FINE , se mostrará todo lo que sea FINE, WARNING, SEVERE , pero si lo tiene configurado en SEVERE , solo aparecerán.

En general, debe usar FINE durante la depuración y cambiar a SEVERE cuando se encuentre en un entorno de producción.


La descripción general del registro de Java TM es bastante interesante para responder todas sus preguntas sobre el registrador de Java:

Verá su registro donde los Handler asociados con su registrador generarán dicho registro (en una Console , o en un Stream ...).
La configuración predeterminada establece un único controlador en el registrador de raíz para enviar salida a la consola.

Nivel de registro :

Cada mensaje de registro tiene un nivel de registro asociado. El nivel proporciona una guía aproximada sobre la importancia y la urgencia de un mensaje de registro. Los objetos de nivel de registro encapsulan un valor entero, con valores más altos que indican prioridades más altas.

La clase Level define siete niveles de registro estándar, que van desde el más FINEST (la prioridad más baja, con el valor más bajo) a SEVERE ( la prioridad más alta, con el valor más alto ).