2011-08-25 4 views
1

mon enregistreur se connecte à mon fichier journal et le catalina.out je ne sais pas comment le résoudre, je ne veux pas l'enregistreur de se connecter aux deux.log4j se connecte à mon fichier journal ET catalina.out

voici mon code:

private static final Logger logger = Logger.getLogger("FA"); 

[...]

if(logger.getAppender("walletServicesAppender")==null) 
    { 
     try 
     { 

     appenderLayout = new PatternLayout(); 
     appenderLayout.setConversionPattern("%d %p - %m%n"); 
     appender = new FileAppender(appenderLayout,"/home/marcel/try/log_file_name.txt"); 
     appender.setName("walletServicesAppender"); 
     logger.addAppender(appender); 
     logger.setLevel(org.apache.log4j.Level.ALL); 
    } 
    catch (IOException ex) 
    { 
     logger.error("Cannot access log file: "+ex.getLocalizedMessage()); 
    }  
    catch(Exception ex) 
    { 
     logger.error("Unknown exception: "+ex.getLocalizedMessage()); 
    } 
    } 
logger.info("INFO MESSAGE!"); 

[...]

Cela fait toujours un double journal à log_file_name.txt ET catalina. out

Merci de votre aide.

EDIT:

logger.setAdditivity(false); 

résolu mon problème

Merci pour votre aide!

+0

Quel configurateur utilisez-vous lorsque vous "démarrez" log4j? De base? Propriété? De plus, tous les loggers que vous créez héritent des enregistreurs parents (et donc "héritent" de leurs appenders). Quelqu'un a-t-il configuré un ConsoleAppender sur un enregistreur parent ou même sur le RootLogger (qui n'a pas d'appender par défaut)? –

Répondre

3

Vous avez probablement un ConsoleAppender dans votre configuration log4j, vérifiez une ligne comme

log4j.appender.SOME_APPENDER_NAME=org.apache.log4j.ConsoleAppender 

dans votre fichier log4j.properties, ou quelque chose d'équivalent si votre configuration utilisent XML.

+0

je n'ai pas encore log4j.properties fichier, parce que je fais tout la configuration dans le code. c'est peut-être l'erreur ?? – Starbax

+1

Peut-être que vous pourriez essayer de définir explicitement "addender additif" à false dans votre code. Quoi qu'il en soit, créer et utiliser un simple fichier de configuration log4j est trivial, je le ferais. – agnul

+0

merci beaucoup, cela a fonctionné pour moi. Je viens de définir logger.setAdditivity (false); alors ça marche MERCI! – Starbax

1

On dirait que il y a un autre appender attaché à votre enregistreur, vous pourriez essayer d'ajouter ce code pour savoir quel Appender il est:

for (Enumeration e = logger.getAllAppenders(); e.hasMoreElements();) { 
    System.out.println("A:" + ((Appender) e.nextElement()).getName()); 
} 

puis regardez à travers votre source et/ou les fichiers de configuration pour voir où c'est en train de se faire.

+0

J'ai déjà pensé à cela et utilisé logger.removeAllAppenders(); cela n'aide pas ... j'ai essayé votre code, ceci est mon journal: [INFO] INFO MESSAGE! A: walletServicesAppender juste un appander, celui que j'ajouté avant je pense que mon enregistreur donne au rootLogger mais je ne sais pas comment interdire ce – Starbax

Questions connexes