2011-04-15 36 views
28

Estoy tratando de usar slf4j + java.util.logging. Sé cómo configurar el código fuente de Java para hacer esto a través de logger = LoggerFactory.getLogger(...) y logger.warn('...') o lo que sea.slf4j + java.util.logging: cómo configurar?

¿Pero dónde está la documentación para configurar la configuración en slf4j? Estoy muy confundido ... Tengo el manual de log4j y estoy familiarizado con los conceptos básicos de los adaptadores de registro, pero no estoy seguro de cómo hacerlo funcionar con slf4j + java.util.logging.

a saber:

  • cuales .properties JVM -D argumento de archivo y/o de línea de comandos necesito para especificar señalar que en mi archivo de configuración?

  • ¿Dónde está la documentación del archivo de configuración para java.util.logging?

  • ¿El uso de slf4j causa algún cambio en mi archivo de configuración? (Es decir, algo que tendría que declarar de manera diferente, vs. simplemente utilizando java.util.logging o log4j directamente)

+1

¿No leer esos artículos en el sitio web de documentación SL4J? http://www.slf4j.org/docs.html –

+5

no, es muy breve. –

+0

No obtengo lo que desea lograr, ¿desea utilizar el registrador de slf4j en el código y java.logging para generar el registro o de otra manera? – moritz

Respuesta

13

Ver this tutorial on jul:

java -Djava.util.logging.config.file = myLoggingConfigFilePath

Pero yo recomendaría ir para Logback

+2

Hay una clara ventaja de utilizar j.u.l, es decir, que es fácil de usar en los cargadores de clases. Lo usamos para propagar mensajes de registro desde una aplicación web (WAR) a los registros de contenedores de servlet. –

11

No hay ninguna configuración en la capa slf4j. Es solo una API, que el backend debe proporcionar para la implementación (más o menos).

Para usar java.util.logging como el backend slf4j, debe tener slf4j-jdk14-mumle.jar de la distribución slf4j en su classpath, y hacer la magia enumerada en el javadoc para habilitarlo. Si no, tendrá un error de tiempo de ejecución que indica que no hay una implementación slf4j activa.

+0

"el sitio slf4j está caído ahora, así que no puedo consultar la página del manual o las preguntas frecuentes)" - exactamente. Tengo slf4j-api - *. Jar y slf4j-jdk14 - *. Jar en mi classpath, simplemente no sé cómo "hacer la magia enumerada en el javadoc" para hacer que redirija a un archivo en lugar de stdout. –

+1

Si recibe mensajes de registro en su consola, significa que el sistema de registro funciona correctamente. Luego necesita configurarlo _COMPLETAMENTE COMO USTED DESEA DE OTRO MODO_ hacer que algo funcione de manera diferente. Es decir. para el registro jdk, debe hacer exactamente el mismo trabajo con las propiedades y, para log4j, debe proporcionar un archivo log4j.xml que indique qué hacer. –

+0

OK, entonces supongo que mi pregunta se convierte en ¿dónde están los documentos sobre la configuración de registro jdk14? –

2

No configura SLF4J; necesita vincular y configurar el proveedor. Yo uso Logback, que fue creado específicamente para SLF4J. También puedes usar log4j. Consulte la entrada correspondiente en el manual: http://www.slf4j.org/manual.html#binding

+4

... y, por supuesto, para responder en realidad la pregunta original_ (¿Por qué todo el mundo votará por respuestas?): por supuesto, se puede usar 'java.util.logging' como la implementación de registro al poner' slf4j-jdk14- {slf4j-version} .jar' en el classpath en lugar de cualquier otro 'slf4j- {binding} .jar'; luego configure el j.u.l. config usando la propiedad '-Djava.util.logging.config.file'. (Descartaría, pero no lo haré ya que también prefiero el logback :-). Pero también me gusta _respuestas_.) – michael

3

He cancelado el registro de Java con el mismo propósito y fui por logback. No hay nada que hacer para configurar el logback con SLF4J en realidad. Simplemente ponga logback.xml en la raíz del jar con la configuración de logback y ponga logback-XX.jar en classpath.

<configuration> 

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <!-- encoders are assigned the type 
     ch.qos.logback.classic.encoder.PatternLayoutEncoder by default --> 
    <encoder> 
     <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> 
    </encoder> 
    </appender> 

    <root level="warn"> 
    <appender-ref ref="STDOUT" /> 
    </root> 
</configuration> 

Esta es una configuración para iniciar sesión en la consola, pero el manual de inicio de sesión tiene más ejemplos.

+3

Aunque estoy de acuerdo, esto no responde la pregunta. Para garantizar los votos positivos, incluya algo como: similar al logback usando 'java -Dlogback.configurationFile =/path/to/config.xml', j.u.l. puede usar: 'java -Djava.util.logging.config.file = myLoggingConfig' w/ya sea un [archivo de propiedades] (http://stackoverflow.com/questions/805701/load-java-util-logging-config-file -for-default-initialization) o [clase] (http://docs.oracle.com/javase/1.4.2/docs/api/java/util/logging/LogManager.html). El logback utiliza de forma predeterminada 'logback.xml' desde classpath; j.u.l utiliza 'logging.properties' desde su directorio de instalación de Java. – michael

-2

A veces parece que usted puede conseguir de distancia con la edición de su archivo como este

tomcat-directory/webapps/your_app_name/WEB-INF/classes/log4j.properties

(archivo de configuración de log4j estándar)

+0

¿Está especificando un camino para usar? Si es así, ¿puedes aclarar por qué funciona y en qué versión de tomcat? – Andreas

+0

@Andreas donde sea que viva su carpeta webapps. Esto fue con Tomcat 6, creo, pero creo que no importa, ya que es más una cosa log4j. ¡Aclamaciones! – rogerdpack

+0

downvoters por favor dejen una razón, ¡gracias! – rogerdpack

2

Básicamente, usted sólo tiene que tener slf4j-api.1.7.7.jar y slf4j-jdk14.1.7.7.jar en su ruta de clase. Y luego cree un archivo logging.properties para su aplicación y establezca las propiedades del sistema -Djava.util.logging.config.file = {path_to_logging.propiedades}

verificación this tutorial a cabo lo que le da ejemplos de cómo configurar slf4j con diferentes marcos de registro como registrador de java, log4j, etc. logback

Cuestiones relacionadas