2010-11-25 20 views
21

De forma predeterminada, slf4j, cuando se utiliza con jdk (slf4j-jdk14-1.6.1.jar), no registra los mensajes de depuración. ¿Cómo los habilito?slf4j logging con jdk - cómo habilitar la depuración?

No encuentro información en los documentos oficiales, en la web o aquí sobre cómo habilitarla.

Encontré información (aunque fallida) creando un archivo en% JDK_HOME%/lib y definiendo el nivel allí, en un archivo de configuración. Sin embargo, me gustaría definir el nivel en compilación/tiempo de ejecución para poder ejecutar y depurar mi aplicación desde mi IDE con diferentes niveles de registro.

¿No hay alguna variable de entorno que pueda establecer o VM arg?

Respuesta

21

¿Por qué crees que no registra mensajes DEBUG?

Si se refiere a que sus llamadas log.debug(String) de registro no terminan en java.util.logging archivos de registro, entonces yo supongo que tienes que configurar el archivo de configuración logging.properties para permitir mensajes de registro en FINE nivel.

Si no quiere meterse con el %JRE_HOME%/lib/logging.properties global, entonces puede simplemente pasar -Djava.util.logging.config.file=logging.properties en la línea de comandos - esto obligará al sistema de registro a buscar ese archivo de configuración en el directorio actual.

O use alguna otra forma (programática) para configurar java.util.logging, vea a continuación el tutorial.

Esto no tiene nada que ver con la configuración de SLF4J; de hecho, SLF4J no tiene ninguna configuración, todo es configurado simplemente intercambiando archivos JAR.


Para su referencia:

+0

Quiero que los mensajes de depuración aparezcan en mi consola (stdout/stderr). Usando eclipse aquí. Además, como se indica en la pregunta, prefiero configurar esto en compilación o tiempo de ejecución en lugar de un archivo estático que se aplica a todos los proyectos y todas las configuraciones de ejecución. es posible? – Kissaki

+1

¿Has probado -Djava.util.logging.config.file = logging.properties? –

+0

No. ¿Es eso una ruta de trabajo-dir entonces? ¿O JDK/lib también? – Kissaki

3

acabo de poner mi archivo logging.properties en mis aplicaciones WEB-INF/classes archivo (o utilice el comando argumento de línea identificado por Neeme Praks si no está desplegándose en una guerra), y tiene el archivo de propiedades abierto en eclipse para que pueda ajustarlo para registrar los paquetes y en el nivel que me interesa.

En el archivo logging.properties, debe asegurarse de que tanto el nivel del registrador como el nivel del manejador estén configurados al nivel que desea. Por ejemplo, si desea que su salida vaya a la consola, es necesario tener al menos lo siguiente:

#logging.properties file contents 

#Define handlers 
handlers=java.util.logging.ConsoleHandler 

#Set handler log level 
java.util.logging.ConsoleHandler.level=FINE 

#Define your logger level 
com.company.application.package.package.level=FINE 

#Assign your handler to your logger 
com.company.application.package.package.handlers=java.util.logging.ConsoleHandler 

Usted mencionó la slf4j-jdk14-1.6.1.jar. Esto proporciona el enlace slf4j a java.util.logging. Debes tenerlo en tu classpath, pero asegúrate de tener también slf4j api (slf4j-api-1.7.12.jar) en tu classpath también.

Encuentro the example logging.properties file in this link útil para crear una variedad de registradores y manejadores, para darle un control detallado sobre qué registros van a la consola y qué registros van a un archivo :.

Y here's the slf4j manual.

+0

¡Más uno para esto! No me di cuenta de que tenía que establecer el nivel para el controlador y el registrador. – Pubudu