log4j frente a inicio de sesión [closed]

9 minutos de lectura

Estamos usando log4j detrás de un envoltorio hecho a sí mismo. Planeamos usar muchas más funciones ahora.

¿Deberíamos actualizar para iniciar sesión?

(Me refiero al marco, no a una fachada como SLF4J)

  • logback suena muy similar al registro de jakarta commons: ¿cuáles son las principales diferencias?

    – mate b

    7 de octubre de 2008 a las 12:52

  • SLF4J (que es la fachada) suena similar a commons.logging. La principal diferencia es que SLF4J usa enlace estático mientras que commons.logging usa alguna estrategia de resolución. Logback (la implementación “nativa” (es decir, no hay una capa contenedora adicional) de la fachada) es comparable a LOG4J pero tiene una API más completa.

    – Huxi

    3 de junio de 2009 a las 4:11

  • SLF4J es un marco de fachada que facilita el cambio de un marco a otro Comparación de pago entre todos los marcos aquí

    – Shubham Srivastava

    4 de octubre de 2020 a las 5:02

avatar de usuario
cekí

Logback implementa de forma nativa la API SLF4J. Esto significa que si está utilizando el inicio de sesión, en realidad está utilizando la API SLF4J. Teóricamente, podría usar las partes internas de la API de inicio de sesión directamente para iniciar sesión, pero eso es muy desaconsejable. Toda la documentación de inicio de sesión y los ejemplos de registradores están escritos en términos de la API SLF4J.

Entonces, al usar logback, en realidad estaría usando SLF4J y, si por alguna razón quisiera volver a log4j, podría hacerlo en cuestión de minutos simplemente colocando slf4j-log4j12.jar en su ruta de clase.

Al migrar de logback a log4j, registre partes específicas, específicamente aquellas contenidas en inicio de sesión.xml el archivo de configuración aún tendría que migrarse a su equivalente log4j, es decir log4j.propiedades. Al migrar en la otra dirección, la configuración de log4j, es decir log4j.propiedades, tendría que convertirse a su equivalente de inicio de sesión. Hay un herramienta en línea para eso. La cantidad de trabajo involucrada en la migración de archivos de configuración es mucho menos que el trabajo requerido para migrar las llamadas del registrador diseminadas a través de todo el código fuente de su software y sus dependencias.

  • Es una gran oportunidad para hablar con el desarrollador de un software tan popular. Gracias Ceki por log4j.

    – Srujan Kumar Gula

    31 de mayo de 2013 a las 17:19

  • Descargo de responsabilidad: este tipo es el desarrollador original de todo Log4j, SLF4J y Logback. Pero no trabajes más para Log4j.

    – Víctor Stafusa

    29 de agosto de 2016 a las 18:26


¿Deberías? .

¿Por qué? Log4J esencialmente ha sido desaprobado por Volver a iniciar sesión.

¿Es urgente? Tal vez no.

¿Es indoloro? Probablemente, pero puede depender de sus declaraciones de registro.

Tenga en cuenta que si realmente desea aprovechar al máximo LogBack (o SLF4J), entonces realmente necesita escribir declaraciones de registro adecuadas. Esto generará ventajas como un código más rápido debido a la evaluación perezosa y menos líneas de código porque puede evitar los guardias.

Finalmente, recomiendo encarecidamente SLF4J. (¿Por qué recrear la rueda con tu propia fachada?)

  • Nota: El proyecto log4j no considera log4j en desuso.

    – Thorbjorn Ravn Andersen

    10 de octubre de 2011 a las 7:59

  • Debe aclararse la terminología; inequívocamente, la autor del proyecto log4j considera retroceder para ser el sucesor de log4j. Es el mismo autor de ambos proyectos, por lo que su opinión debería tener algo de peso; el “proyecto log4j” en sí mismo realmente no “considera” nada. El grupo actual de personas asociadas con log4j tiene opiniones divergentes (algunos realmente están de acuerdo, algunos no sorprende que no estén de acuerdo). Con un poco más de historia detrás de nosotros (3 años después del comentario original), SLF4J + Logback continúan ganando terreno sobre Log4j.

    – Miguel

    4 de febrero de 2013 a las 5:29


  • @michael_n Tenga en cuenta que Log4j 1 NO fue escrito por una sola persona. Está mal decir “el mismo autor”. Ceki es un autor importante, sin duda, pero no el único. De hecho, mucha gente ayudó a hacer de Log4j 1 lo que es.

    – cristiano

    16 de julio de 2014 a las 8:55

  • @Christian “NO fue escrito…” por supuesto, eso debería estar implícito para cualquier proyecto de apache maduro (y mi calificación, “el grupo actual de personas asociadas con log4j”); sin embargo, si pudiera editar el comentario, diría “originalmente autor”, como también dice el artículo de wikipedia. Re: “De hecho, mucha gente ayudó a hacer de Log4j 1 lo que es” , que es absolutamente, equívocamente cierto (es decir, para bien o para mal); y también, de alguna manera, contribuyó al inicio de slf4j+logback 🙂

    – Miguel

    16 de julio de 2014 a las 21:14


  • Entonces, ¿qué hay para que todos ustedes peleen por esta o aquella biblioteca de registro? ¿Por qué estamos tratando de matar/promover bibliotecas? Al menos proporcione algún razonamiento racional POR QUÉ uno es mejor que el otro. Dios, Stack Overflow es un desastre.

    – Usuario

    7 sep 2016 a las 18:12

En el mundo de los registros hay fachadas (como Apache Commons Logging, slf4j o incluso la API Log4j 2.0) e implementaciones (Log4j 1 + 2, java.util.logging, TinyLog, Logback).

Básicamente, debe reemplazar su envoltorio hecho a sí mismo con slf4j SI y solo SI no está satisfecho con él por alguna razón. Si bien Apache Commons Logging realmente no brinda una API moderna, slf4j y la nueva fachada de Log4j 2 sí lo brindan. Dado que muchas aplicaciones usan slf4j como contenedor, podría tener sentido usarlo.

slf4j brinda una cantidad de azúcar API agradable, como este ejemplo de los documentos de slf4j:

logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT);

Es sustitución de variables. Esto también es compatible con Log4j 2.

Sin embargo, debe tener en cuenta que slf4j está desarrollado por QOS, que también mantiene el inicio de sesión. Log4j 2.0 está integrado en Apache Software Foundation. En los últimos tres años ha vuelto a crecer allí una comunidad vibrante y activa. Si aprecia el código abierto como lo hace Apache Software Foundation con todas sus garantías, puede reconsiderar el uso de slf4j a favor de usar Log4j 2 directamente.

Tenga en cuenta:

En el pasado, log4j 1 no se mantenía activamente mientras que Logback sí. Pero hoy las cosas son diferentes. Log4j 2 se mantiene activamente y se lanza en un horario casi regular. También incluye muchas características modernas y -en mi humilde opinión- hace un par de cosas mejores que Logback. Esto a veces es solo una cuestión de gustos y debes sacar tus propias conclusiones.

Escribí una descripción general rápida de las nuevas características de Log4j 2.0: http://www.grobmeier.de/the-new-log4j-2-0-05122012.html

Al leer, verá que Log4j 2 se inspiró en Logback pero también en otros marcos de registro. Pero la base del código es diferente; no comparte casi nada con Log4j 1 y cero con Logback. Esto condujo a algunas mejoras, como en el ejemplo, Log4j 2 funciona con flujos de bytes en lugar de cadenas bajo el capó. Además, no pierde eventos durante la reconfiguración.

Log4j 2 puede iniciar sesión con mayor velocidad que otros marcos que conozco: http://www.grobmeier.de/log4j-2-performance-close-to-insane-20072013.html

Y aún así, la comunidad de usuarios parece ser mucho más grande que Logbacks: http://www.grobmeier.de/apache-log4j-is-the-leading-logging-framework-06082013.html

Dicho todo esto, la mejor idea es que elija los marcos de registro que mejor se adapten a lo que desea lograr. No cambiaría un marco completo si deshabilitara el inicio de sesión en el entorno de producción y solo realizara el inicio de sesión básico en mi aplicación. Sin embargo, si hace un poco más con el registro, solo mire las características que proporcionan los marcos y sus desarrolladores. Si bien obtiene soporte comercial para Logback a través de QOS (escuché), actualmente no hay soporte comercial para Log4j 2. Por otro lado, si necesita realizar un registro de auditoría y necesita un alto rendimiento proporcionado por los anexadores asíncronos, tiene mucho sentido para comprobar log4j 2.

Tenga en cuenta que a pesar de todo el confort que brindan, las fachadas siempre consumen un poco de rendimiento. Tal vez no te afecte en absoluto, pero si tienes pocos recursos, es posible que debas guardar todo lo que puedas tener.

Sin conocer mejor sus necesidades es casi imposible dar una recomendación. Solo: no cambies solo porque mucha gente cambia. Cambie solo porque vea el valor de ello. Y el argumento de que log4j está muerto ya no cuenta. Está vivo y hace calor.

DESCARGO DE RESPONSABILIDAD: Actualmente soy vicepresidente de Apache Logging Services y también participo en log4j.

avatar de usuario
caja de herramientas

No respondo exactamente a su pregunta, pero si pudiera alejarse de su envoltorio hecho a sí mismo, entonces hay Fachada de registro simple para Java (SLF4J) a la que Hibernate ahora ha cambiado (en lugar del registro común).

SLF4J no sufre ninguno de los problemas del cargador de clases o pérdidas de memoria observados con Jakarta Commons Logging (JCL).

SLF4J admite el registro JDK, log4j y logback. Entonces, debería ser bastante fácil cambiar de log4j a logback cuando sea el momento adecuado.

Editar: Disculpas por no haberme dejado claro. Estaba sugiriendo usar SLF4J para aislarse de tener que tomar una decisión difícil entre log4j o logback.

Su decisión debe basarse en

  • su necesidad real de estas “más funciones”; y
  • el costo esperado de implementar el cambio.

Debe resistir la tentación de cambiar las API solo porque es “más nueva, más brillante, mejor”. Sigo una política de “si no está roto, no lo patees”.

Si su aplicación requiere un marco de registro muy sofisticado, es posible que desee considerar por qué.

avatar de usuario
Dima

Un proyecto maduro o incluso un proyecto en etapas profundas de desarrollo probablemente perdería más de lo que ganaría con dicha actualización, en mi humilde opinión. El inicio de sesión ciertamente es mucho más avanzado en una variedad de puntos, pero no hasta el punto de reemplazarlo por completo en un sistema en funcionamiento. Sin duda, consideraría el inicio de sesión para un nuevo desarrollo, pero el log4j existente es lo suficientemente bueno y maduro para cualquier cosa que ya se haya lanzado y conocido al usuario final. Esto es muy subjetivo, deberías ver el costo por ti mismo.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad