Abr 112014
 
Artículo Java

En ocasiones, al ejecutar una aplicación java podemos encontrarnos con el siguiente mensaje de error:

$ java  -jar aplicacion.jar
log4j:WARN No appenders could be found for logger (com.foo).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

Esto significa que la aplicación utiliza el API log4j para la generación de mensajes de trazado, pero no encuentra el fichero de configuración log4j.properties.

Podemos obtener más información sobre el problema, añadiendo el parámetro “-Dlog4j.debug”:

$ java -jar -Dlog4j.debug aplicacion.jar
log4j: Trying to find [log4j.xml] using context classloader sun.misc.Launcher$AppClassLoader@7d772e.
log4j: Trying to find [log4j.xml] using sun.misc.Launcher$AppClassLoader@7d772e class loader.
log4j: Trying to find [log4j.xml] using ClassLoader.getSystemResource().
log4j: Trying to find [log4j.properties] using context classloader sun.misc.Launcher$AppClassLoader@7d772e.
log4j: Trying to find [log4j.properties] using sun.misc.Launcher$AppClassLoader@7d772e class loader.
log4j: Trying to find [log4j.properties] using ClassLoader.getSystemResource().
log4j: Could not find resource: [null].
log4j:WARN No appenders could be found for logger (com.foo).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

Como podemos ver, el sistema intenta encontrar un fichero llamado “log4j.xml”, o bien “log4j.properties”, utilizando el “classloader”.

Por lo tanto, el fichero hay que colocarlo en cualquiera de los directorios especificados en la variable CLASSPATH, que es también donde el sistema buscará las clases que necesite cargar para ejecutar la aplicación.

Alternativamente, podemos especificar la ubicación añadiendo el parámetro “-Dlog4j.configuration=’path_to_log4j.properties’:

$ java -jar -Dlog4j.debug -Dlog4j.configuration="./log4j.properties" aplicacion.jar
log4j: Trying to find [log4j.xml] using context classloader sun.misc.Launcher$AppClassLoader@7d772e.
log4j: Trying to find [log4j.xml] using sun.misc.Launcher$AppClassLoader@7d772e class loader.
log4j: Trying to find [log4j.xml] using ClassLoader.getSystemResource().
log4j: Trying to find [log4j.properties] using context classloader sun.misc.Launcher$AppClassLoader@7d772e.
log4j: Using URL [file:/home/usuario/log4j.properties] for automatic log4j configuration.
log4j: Reading configuration from URL file:/home/usuario/log4j.properties
log4j: Parsing for [root] with value=[INFO, file].
log4j: Level token is [INFO].
log4j: Category root set to INFO
log4j: Parsing appender named "file".
log4j: Parsing layout options for "file".
log4j: Setting property [conversionPattern] to [%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n].
log4j: End of parsing for "file".
log4j: Setting property [maxBackupIndex] to [1].
log4j: Setting property [file] to [/home/usuario/log4j.log].
log4j: Setting property [maxFileSize] to [1MB].
log4j: setFile called: /home/usuario/log4j.log, true
log4j: setFile ended
log4j: Parsed "file" options.
log4j: Finished configuring.

 Publicado por en 11:19 am

 Deja un comentario

(requerido)

(requerido)