Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Logger vs LogFactory

Estas en el tema de Logger vs LogFactory en el foro de Java en Foros del Web. Hola, estoy manteniendo una aplicación que usa la librería "org.apache.log4j.Logger", y ocurre que no pinta ningún log (ni en fichero ni en consola) mientras no ...
  #1 (permalink)  
Antiguo 21/10/2014, 00:39
 
Fecha de Ingreso: septiembre-2014
Mensajes: 8
Antigüedad: 9 años, 6 meses
Puntos: 0
Logger vs LogFactory

Hola,
estoy manteniendo una aplicación que usa la librería "org.apache.log4j.Logger", y ocurre que no pinta ningún log (ni en fichero ni en consola) mientras no pasa por el siguiente código: (a partir de ahi ya escribe logs, incluso de las demás clases)

URL url = Loader.getResource("log4j.properties");
PropertyConfigurator.configure(url);
LoginAction.TRAZA = Logger.getLogger(LoginAction.class);

(el caso es que "TRAZA" ya estaba definida en la clase como
"private static Logger TRAZA = Logger.getLogger(InicioFiltroBuscadorExpedientesAc tion.class.getName());")

Sin embargo, este problema no ocurre con la librería "org.apache.commons.logging.LogFactory", ya que escribe en los logs sin necesidad de ninguna línea de código adicional, aparte de definir la variable
"private static Log log = LogFactory.getFactory().getInstance(LoginAction.cl ass);"

¿Alguien sabe a qué se debe esa diferencia?
Gracias
  #2 (permalink)  
Antiguo 21/10/2014, 01:31
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Logger vs LogFactory

Log4j y commons.logging son dos librerías distintas por lo que no puedes esperar que funcionen igual.

Log4j lee automáticamente el fichero log4j.properties si este está en el root del classpath, no necesitas hacer esto

URL url = Loader.getResource("log4j.properties");
PropertyConfigurator.configure(url);

Y lo de LoginAction ¿por qué lo haces? Con usar el logger de

private static Logger TRAZA = Logger.getLogger(InicioFiltroBuscadorExpedientesAc tion.class.getName());

ya está.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 21/10/2014, 01:58
 
Fecha de Ingreso: septiembre-2014
Mensajes: 8
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Logger vs LogFactory

Ok, (solo con "private static Logger TRAZA = Logger.getLogger(InicioFiltroBuscadorExpedientesAc tion.class.getName());" no me funcionaba)

Por lo que estoy entendiendo, no estaba encontrando el fichero "log4j.properties", aunque está en WEB-INF/src (como tu dices, si ahora quito la línea del "Logger.getLogger", funciona bien)

Gracias!!
  #4 (permalink)  
Antiguo 21/10/2014, 02:07
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Logger vs LogFactory

En el caso de aplicaciones web, el log4j.properties debe ir en WEB-INF\classes

Y el logger que debes usar es este

private static Logger log = Logger.getLogger(InicioFiltroBuscadorExpedientesAc tion.class.getName());

No deberías llamar TRAZA al logger con mayúscula, por convenio mayúsculas indica una constante.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: clase
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:37.