2011-06-29 4 views
4

J'ajoute la journalisation à un projet Web Java sur lequel je travaille. J'ai rencontré une erreur que je n'arrive pas à comprendre.log4j Impossible de lire le fichier de configuration

L'erreur que je reçois de tomcat est:
log4j:ERROR Could not read configuration file [log4j.properties]. java.io.FileNotFoundException: log4j.properties (No such file or directory)

J'ai cette méthode simple dans ma classe:

@RemotingInclude 
public UserAccount save(UserAccount dataObject) 
{ 
    PropertyConfigurator.configure("log4j.properties"); 
    logger.debug(dataObject.toString()); 

    return dao.save(dataObject); 
} 

Quand je regarde dans mes webapps // WEB-INF/dossier de la classe Je vois mon fichier log4j.properties. Lorsque je déploie sur mon serveur Tomcat et que je redémarre Tomcat, le fichier admin.log est créé, mais rien n'est écrit dessus. Même après avoir frappé la méthode ci-dessus. Toute aide avec ceci est grandement appréciée.

Ceci est le contenu actuel de mon fichier log4j.properties:

log4j.appender.AdminFileAppender=org.apache.log4j.FileAppender 
log4j.appender.AdminFileAppender.File=admin.log 
log4j.appender.AdminFileAppender.layout=org.apache.log4j.PatternLayout 
log4j.appender.AdminFileAppender.layout.ConversionPattern= %-4r [%t] %-5p %c %x - %m%n. 
log4j.appender.ReportFileAppender=org.apache.log4j.FileAppender 
log4j.appender.ReportFileAppender.File=report.log 
log4j.appender.ReportFileAppender.layout=org.apache.log4j.PatternLayout 
log4j.appender.ReportFileAppender.layout.ConversionPattern= %-4r [%t] %-5p %c %x - %m%n 
log4j.logger.com.rottmanj.services=WARN,AdminFileAppender 

Répondre

1

Cette approche de la bootstraping Log4j est erroné. Ceci est généralement le moyen qui est mis en œuvre:

import org.apache.log4j.Logger; 

public class MyService { 

    public UserAccount save(UserAccount dataObject) { 
     logger.debug(dataObject.toString()); 

     return dao.save(dataObject); 

    } 

    private static Logger logger = Logger.getLogger(MyService.class); 

} 

De cette façon, Log4j va rechercher automatiquement les log4j.properties dans la racine du classpath.

+0

Cela a réglé mon problème, merci Alfredo. – rottmanj

+0

J'ai besoin de mettre le code ci-dessous dans tous mes fichiers de classe ou juste le principal? public UserAccount save (UserAccount dataObject) { logger.debug (dataObject.toString()); return dao.save (dataObject); } – Siddharth

Questions connexes