2012-05-24 12 views
9

En mi aplicación Java oscilación me carga las propiedades de log4j de un archivo de propiedades almacenadas en un paquete en la aplicación y me carga que el archivo de propiedades como,propiedades Cargando log4j de un paquete en java

try {        
    PropertyConfigurator.configure("conf/log4j.properties"); 
    logger.info("Starting the system.");       

} catch (Exception e) { 
    e.printStackTrace(); 

} 

entonces consigo siguiente error cuando se inicia la aplicación,

log4j:ERROR Could not read configuration file [conf/log4j.properties]. 
java.io.FileNotFoundException: conf/log4j.properties (No such file or directory) 
     at java.io.FileInputStream.open(Native Method) 
     at java.io.FileInputStream.<init>(FileInputStream.java:138) 
     at java.io.FileInputStream.<init>(FileInputStream.java:97) 
     at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:297) 
     at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:315) 
     at com.bio.ofm.mnu.views.SplashScreen$1.run(SplashScreen.java:70) 
     at java.lang.Thread.run(Thread.java:722) 
log4j:ERROR Ignoring configuration file [conf/log4j.properties]. 
log4j:WARN No appenders could be found for logger (com.bio.ofm.mnu.views.SplashScreen). 
log4j:WARN Please initialize the log4j system properly. 

¿Esta forma de cargar el archivo de propiedades es incorrecta? por favor ayuda.

construyo un archivo .jar y ejecutar la aplicación usando el frasco **

+0

¿Está su archivo de propiedad almacenado en el sistema de archivos o en un archivo JAR? Y, en cualquier caso, ¿es correcta la ruta que está utilizando? Está utilizando una ruta relativa, que puede (y probablemente) provocará muchos problemas. – Jochen

+0

mi archivo de propiedades está en el jar – Harsha

+0

Ver la respuesta de Diego, eso debería funcionar. – Jochen

Respuesta

17

Si conf es la carpeta de origen que puede utilizar:

PropertyConfigurator.configure("classpath:conf/log4j.properties"); 

cosa que se pueda probar esto:

PropertyConfigurator.configure(this.getClass().getClassLoader().getResource("conf/log4j.properties")); 
3

La clase de forma automática LogManager buscará un archivo llamado log4j.properties o log4j.xml en el classpath utilizado para cargar las clases log4j. Hasta la versión 1.2.6, log4j buscaría solo el archivo log4j.properties en classpath. Desde la versión 1.2.7, log4j busca tanto log4j.properties como log4j.xml en classpath.

Simplemente coloque el archivo log4j en el paquete predeterminado. También debe asegurarse de que el archivo esté en el directorio .class.

1

que utilizan la biblioteca de Java Rachel http://rachel.sourceforge.net/ mucho para este tipo de cosas

Descargar el lib y agregarlo a la ruta de clase. Entonces puede usarlo para cargar cualquier archivo de un archivo/paquete JAR y también funciona cuando usa aplicaciones implementadas JNLP. Tienen muchos buenos tutoriales para leer sobre la mejor manera de cargar su archivo. Por lo general, me gusta cargarlos como flujos de entrada.

Cuestiones relacionadas