2012-05-24 16 views
9

Nella mia applicazione Java Swing che carico proprietà log4j da un file di proprietà memorizzati in un pacchetto per l'applicazione e io caricare il file proprietà come,proprietà Caricamento log4j da un pacchetto in java

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

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

} 

poi ho seguito errore all'avvio dell'applicazione,

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. 

Questo modo di caricare il file di proprietà è errato? per favore aiuto.

costruisco un file .jar ed eseguire l'applicazione utilizzando quel vaso **

+0

Il file di proprietà è memorizzato nel file system o in un file JAR? E in entrambi i casi, il percorso che stai utilizzando è corretto? Stai utilizzando un percorso relativo, che può (e probabilmente lo farà) causare un sacco di problemi. – Jochen

+0

il mio file di proprietà è nel barattolo – Harsha

+0

Vedere la risposta di Diego, che dovrebbe funzionare. – Jochen

risposta

17

Se conf è la cartella di origine è possibile utilizzare:

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

altro si può provare questo:

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

Il LogManager classe automaticamente cercherà un file chiamato log4j.properties o log4j.xml nello classpath utilizzato per il caricamento delle classi log4j. Fino alla versione 1.2.6, log4j cercava solo il file log4j.properties nel classpath. Dalla versione 1.2.7, log4j cerca sia log4j.properties e log4j.xml nel classpath.

Inserire semplicemente il file log4j nel pacchetto predefinito. Dovresti anche assicurarti che il file sia nella directory di .class.

1

Io uso la libreria Java Rachel http://rachel.sourceforge.net/ molto per questo genere di cose

Scaricare il lib e aggiungerlo al tuo percorso di classe. Quindi è possibile utilizzarlo in questo modo per caricare qualsiasi file da un file/pacchetto JAR e funziona anche quando si utilizzano applicazioni distribuite JNLP. Hanno un sacco di buoni tutorial da leggere sul modo migliore per caricare il tuo file. Di solito mi piace caricarli come inputstream.

Problemi correlati