Author Topic: Logger vs LogFactory  (Read 1794 times)

JobFer

  • Newbie
  • *
  • Posts: 10
  • Karma: 0
    • View Profile
Logger vs LogFactory
« on: Octubre 21, 2014, 02:40:56 pm »
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(InicioFiltroBuscadorExpedientesAction.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.class);"

¿Alguien sabe a qué se debe esa diferencia?
Gracias

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5466
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Logger vs LogFactory
« Reply #1 on: Octubre 21, 2014, 02:59:44 pm »
Hola:

No sé el caso de apache commons login, pero en el caso de log4j es necesario configurarlo de alguna forma para que haga algo. Si no se configura, no saca nada (sólo un error en consola indicando que no está configurado).

Si no se configura, por defecto busca el fichero log4j.properties en el raíz del classpath (un jar que tenga dentro un log4j.properties en su raíz, o junto a tus clases, pero sin pertenecer a ningún paquete). En tu caso, si tienes que hacer

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

para que se cargue, es posiblemente porque log4j.properties no está en el raíz. Tal cual veo el código, tiene toda la pinta que está en el mismo paquete que la clase Loader y por eso no lo encuentra por defecto.

En cuanto a apache commons, sin conocerlo, imagino que tendrá una configuración por defecto y por eso no es necesario nada adicional para que salga.

Se bueno.

JobFer

  • Newbie
  • *
  • Posts: 10
  • Karma: 0
    • View Profile
Re: Logger vs LogFactory
« Reply #2 on: Octubre 21, 2014, 03:21:58 pm »
Gracias!!

 

ey