Foro sobre Java SE > Ayuda con Log4j2
Log4j2 es aun una beta. Hay muchisima gente con tu mismo problema (funciona bien hasta que se ejecuta en un jar) y no hay respuestas o soluciones claras.
Porque no utilizas simplemente el log4j de toda la vida?
Un saludo
Hola, ya sacaron la primer version final de la 2.0, es la rc1, la estaba intentando usar porque me pasaron una aplicacion compilada y su código fuente, esta aplicación usa esa version. La compilada funciona perfectamente pero el código fuente al compilarlo me funciona pero el log4j me devuelve el error que mencione en el post y por lo tanto no muestra los mensajes en la consola :/
Una duda, la version log4j de toda la vida que creo que es la 1.2.7 que diferencias tiene con la nueva? me parce que es mas inestable.
Buenas,
Log4j es y ha sido durante muchos años el standard de facto como servicio de login. La versión 1.2.17 (no la 1.2.7) es versión estable de producción desde hace ya más de dos años. Durante este tiempo miles de aplicaciones la han utilizado a fondo, bien directamente o como implementación a través de una fachada como slf4j. Por tanto, decir que te parece más intestable me parece un poco atrevido.
Es atrevido, sobre todo, porque la versión de log4j 2 (que NO 2.0) que usas, como bien comentas, es la rc1. rc1 quiere decir "Release Candidate 1". Es decir, que no han sacado el producto final y aún está en fase de testing. Es un producto independiente de log4j 1.x que han hecho de nuevo desde 0 y que por tanto no es compatible: http://logging.apache.org/log4j/2.x/
También es cuanto menos atrevido que aquel que te ha pasado la aplicación compilada haya escogido una versión no final de una librería que proporciona nada menos que un servicio transversal, como es el logging. Este "atrevimiento" es el que te está costando muchas horas a ti y seguramente a cualquiera que intente compilarlo. Ese tipo de "atrevimientos" son los que generan retrasos en los proyectos horas extras a los equipos y sobrecostes a las empresas.
Si buscas el error en google hay decenas de personas reportándolo en la propia página de los desarrolladores de ese producto, el mismo que atrevidamente consideras tan estable. Ni siquiera los desarrolladores dan una solucion rotunda y satisfactoria. Como vamos a pretender dártela unos pobres ignorantes como nosotros desde un foro generalista de Java?
https://issues.apache.org/jira/browse/LOG4J2-365
https://issues.apache.org/jira/browse/LOG4J2-461
Si dices que te funciona la versión ya compilada que te han pasado, para mi la única posibilidad de que consigas que funcione es ser 100% metódico:
-Asegúrate, al exportarlo, de que tu jar tiene exactamente el mismo contenido que el jar original, tanto en ficheros class, como en paquetes, como en ficheros de configuración, como en el manifest.
-Compila exactamente con la misma versión de java de la misma cantidad de bits y con el mismo sistema operativo.
-Asegúrate de que compilas exactamente contra las mismas librerías que el original.
-Una vez hecho esto, comprueba que tu jar generado es exactamente igual. De hecho, si el bytecode y las configuraciones son las mismas, debería tener exactamente el mismo tamaño en bits que el original.
-Por último, asegurate en ejecución de que utiliza en runtime las mismas librerías que has utilizado para la compilación.
Un saludo
"el mismo tamaño en bits" => en bytes, quiero decir
Ami me parece mas atrevida la forma en la que me respondes, yo nunca asegure nada de lo que dije, primero que nada, ecribí "creo que es la 1.2.7", no me acordaba exactamente la version del log4j mas usada, segundo, rc1 es la version candidata a version final (como el nombre lo dice), osea que va a ser la version final si no se presenta ningun problema que haya que corregir, vos habias dicho en tu publicación anterior que era todavía una version beta y no es así, la version beta esta antes de la RC1. Otra cosa, la versión Log4j2 si es la versión 2.0 fijate en la página oficial.
La persona que me lo paso la tenía archivada en su PC poreso no la tenía con ningún tipo de documentación ni nada que me guíe para compilarla. Y si, la verdad es que me llevo bastantes horas hacerlo funcionar, pero ya lo logre, ya funciona, analize las clases de la aplicación para buscar la versión con la que fué compilada, descargue el source del Log4j2, lo agregue al proyecto y desde el pom agregue absolutamente todas las dependencias para compilar el log4j, agregue las dependencias de mi proyecto, hice una limpieza completa de la clase principal de la aplicación (simplifique varias lineas para descartar posibles errores que hayan pasado desapercibidos y actualize las librerias). Agregue varios plugins de maven para que a la hora de compilar cargue todas las librerias en el jar final y después de varias horas solucionando errores que me daba el compilador salió funcionando y ahora estoy organizando un poco las cosas porque tengo proyectos de prueba creados por todos lados jaja
Si leí en google la cantidad de personas que reportaban problemas con las librerias de log4j pero eso no quiere decir que funcionen mal, no puedo guiarme por ellos ya que son problemas particulares, yo me centre en que la aplicación funcionaba con esas librerías y por lo tanto debería funcionar al recompilarla. Y como ya dije anteriormente, yo nunca lo considere mas estable, solo pregunte si era mas estable la version 2.0 nunca lo afirme. No entiendo porque autodenominarse ignorante y tratar a todos los de este foro como tal, yo entre al foro para buscar ayuda, no conozco a nadie de este foro, podría haber gente especializada y seguramente con mayor conocimiento que yo.
Gracias por las respuestas y la ayuda, las comprobaciones que mencionas si las habia realizado pero al hacer eso llegue a la conclusión que era una aplicación "reconstruida" así que los bytes de las clases no coincidian. Pero por suerte la aplicación ya esta corriendo correctamente y por ahora no note ningúna anomalía. Gracias nuevamente.
PD/: No es por sonar agresivo pero me parece que te llevas bien con la palabra "atrevido"
por suerte la aplicación ya esta corriendo correctamente y por ahora no note ningúna anomalía
Es una gran noticia que de repente se haya arreglado tu problema misteriosa y mágicamente. Sería fantástico que puedas pasarte un momento algunos de esos foros del producto (o por este mismo) para comentar tu problema, explicar como lo has solucionado y poder así ayudar a otros que se encuentren en tu misma situación.
En cuanto al resto del mensaje, no voy a hacer ningún esfuerzo en replicar. La verdad es que me resulta del todo indiferente.
Un saludo,
¿Misteriosa y mágicamente? estuve 3 días para solucionarlo, me habria gustado que alguien de este foro me hubiera dado una mano pero por lo que veo no hay animos de ayudar, pero bueno por suerte ya lo solucione. Si te hubieras tomado un momento en leer mi comentario te darías cuenta que explique como lo solucione. Aver si aprendes a leer primero antes de responder.
¿Que no hay ánimos de ayudar?
Lo que quieres, desde tu mensaje inicial en el foro de JavaEE, es que te ayuden a compilar una librería en pruebas, porque quieres empaquetar todo tu código, dependencias incluidas, en un único jar.
Lo lógico hubiese sido, desde un principio, que hubieses planteado tu problema en los foros de log4j2, que son quienes desarrollan y compilan la librería en cuestión.
No se si comprendes que lo que quieres hacer no es, ni mucho menos, lo habitual en el desarrollo en Java. Ni tampoco pareces entender que tu problema no tiene nada que ver con JavaSE.
¿Esperas que en un foro sobre JavaSE se sepa cómo compilar cualquier librería existente, aún más, una en pruebas?.
Creo que se te ha dedicado mucha más atención, tanto en este como en el otro foro, de lo que merece tu "problema de compilación."
Hola, tengo un gran problema con log4j en su version 2.0 no puedo hacerlo funcionar por mas que intente mil formas, busque ejemplos en internet, intente compilandolo con Maven y no logro hacerlo funcionar, siempre me devuelve este mensaje: "ERROR StatusLogger Unable to locate a logging implementation, using SimpleLogger" Probe creando el archivo properties, poniendo el archivo Log4j2.xml en todos lados y no hay caso, no me funciona. Alguien podría ayudarme porfavor? estaría genial si pudieran darme un ejemplo. Gracias de antemano. Saludos!
Aclaro que si tengo agregado el API y el CORE del Log4j2