2010-03-28 18 views
15

Esta pregunta se hace periódicamente, pero durante mucho tiempo sentí que los marcos de registro de Java existentes eran demasiado complicados y estaban sobrediseñados, y quiero ver qué hay de nuevo.¿Cuáles son las últimas opciones en marcos de registro de Java?

Tengo un problema más crítico en mi proyecto actual ya que hemos estandarizado en JSON como nuestra codificación de datos legible por humanos, y la mayoría de los marcos de registro que he visto requieren XML. Realmente preferiría evitar usar JSON para el 95% de la configuración de mis aplicaciones, y XML para el resto solo por el marco de trabajo (a decir verdad, odio que XML se use para cualquier cosa que no sea el marcado de texto, su propósito original).

¿Hay nuevos frameworks de registro de Java que se mantienen activamente, son razonablemente potentes, tienen un repositorio maven, se pueden reconfigurar sin reiniciar su aplicación y no lo vinculan a XML?

+0

¿Quién habría pensado que un día la gente se activa la búsqueda de software que no "se ata a XML"? –

+2

@David Leonard: casi cualquier persona que haya existido lo suficiente como para reconocerlo como Just Another Silver Bullet. La disciplina es inmadura, por lo que está en constante evolución. Espere suficientes años y todo lo que haya aprendido no solo pasará de moda, sino que se mostrará que no es óptimo. – CPerkins

Respuesta

20

usted tiene 3 opciones:

  • Log4J
  • java.util.logging (JUL)
  • Logback (el sucesor de Log4J)

Ahora, vamos a ver cómo se reúnen sus requisitos:

  1. mantenido activamente
  2. razonablemente potente
  3. tienen un acuerdo de recompra experto
  4. pueden volver a configurar sin necesidad de reiniciar la aplicación
  5. no te ate a XML

log4j:

  1. No, no activamente principal CONTENIDA
  2. Sí -
  3. Sí -
  4. Yes -
  5. Yes (utilizando el archivo de propiedades Java, consulte Configuración).

java.util.logging (JUL):

  1. yo diría que sí -
  2. a su discreción -
  3. N/A -
  4. sí (a través de JMX o LogManager#readConfiguration() -
  5. Sí (usando archivos de propiedades)

Logback:

  1. Sí -
  2. Sí -
  3. Sí -
  4. Sí, a través de JMX o autoScan -
  5. Configuration files in XML or Groovy

Parece que tendrá que hacer algunas concesiones (o buscar un marco del que no tenga conocimiento). Yo iría por Logback, aquí es donde pasan las cosas ahora.

+2

La configuración para Logback se puede escribir en Groovy, lo que facilita el estricto requisito de la configuración basada en XML. También planean apoyar a Scala en el futuro. –

+0

FWIW: el '' no mantenido activamente '' log4j 1.x' tiene un sucesor ['Apache log4j 2.x'] (http://logging.apache.org/log4j/2.x/) que se mantiene activamente en el momento de escribir esto [Rastreador de problemas] (https://issues.apache.org/jira/browse/LOG4J2) –

+0

Creo que esto debería modificarse a datos tabulares – mtk

4

SLF4J es lo último y lo mejor, hasta donde yo sé.

Seguramente, el XML requerido para configurar log4j no puede considerarse opresivo. Es posible que se oponga a la configuración XML en general, pero incluso eso está cambiando. Spring ofrece la opción de usar XML o anotaciones, al igual que la mayoría de los otros marcos. Creo que objetar XML algo más que el marcado va demasiado lejos. ¿Deberían Ant y NANT apagarse porque eligieron XML? Yo creo que no.

+6

SLF4J no es realmente un marco de registro, solo una fachada. –

+0

La lista suministrada de marcos de registro me parece bastante exhaustiva. Incluye java.util.logging. El OP es gratis para conectar el que mejor se adapte a la necesidad. – duffymo

+1

Sí, necesita conectar un marco de registro (jul, log4j, logback), sfl4j es solo una fachada. –

0

Si bien el método de configuración común para log4j es xml, también puede configurarlo programáticamente, lo que significa que puede usar cualquier sistema de configuración que desee (y también reconfigurarlo en tiempo de ejecución).

0

Es posible que desee consultar nuestra herramienta de registro de Java SmartInspect (es comercial). SmartInspect se mantiene activamente, se puede configurar con dos líneas de código y admite archivos de configuración que solo contienen pares de nombre = valor (sin XML :)). SmartInspect también puede volver a cargar automáticamente los archivos de configuraciones cuando se cambian, una función útil para los cambios de configuración en vivo y los sistemas de producción. SmartInspect también viene con un análisis de registros gráficos y herramienta de monitoreo que le puede resultar útil:

alt text http://www.gurock.com/images/feature/smartinspect-screenshot.png

Cuestiones relacionadas