Question

J'ai utilisé log4j dans un programme java. Je l'ai initialisé avec:

BasicConfigurator.configure(); // logger configuration
try {
     logger.setLevel(Level.DEBUG);
} catch (Exception e) {
     System.out.println("Logfile not found");
}

Mais, lors de l'exécution du programme, j'obtiens 3 instructions de journal au lieu d'une. Par exemple,

3 lines 
1047 [main] INFO ibis.Preproc.Ratings  - Added AS TIMEZONE to tZones[0] = GMT-12:00
1047 [main] INFO ibis.Preproc.Ratings  - Added AS TIMEZONE to tZones[0] = GMT-12:00
1047 [main] INFO ibis.Preproc.Ratings  - Added AS TIMEZONE to tZones[0] = GMT-12:00

au lieu d'une ligne

1047 [main] INFO ibis.Preproc.Ratings  - Added AS TIMEZONE to tZones[0] = GMT-12:00

Y a-t-il des configurations supplémentaires à faire pour log4j afin d'éviter cela?

Était-ce utile?

La solution

J'ai eu un comportement similaire, et il s'est avéré que Log4J a été configuré plusieurs fois; en utilisant BasicConfigurator, mais aussi avec un fichier log4j.xml que j'avais oublié. Se pourrait-il qu'il y ait une configuration Log4J supplémentaire quelque part sur le chemin de classe?

Autres conseils

Très probablement, vous avez plus d’un appendice. Voir le manuel de Log4j (section: Annexes et présentations):

  

Chaque demande de journalisation activée pour un enregistreur donné sera transmise à tous les ajouts de cet enregistreur, ainsi qu'aux appendeurs situés plus haut dans la hiérarchie.

Vous pouvez essayer de définir l'indicateur d'additivité sur false.

Eh bien, vous n’avez pas montré comment votre programme s’exécutait. Voici un programme complet qui ne montre qu'une seule ligne:

import org.apache.log4j.*;

public class Test
{
    public static void main(String[] args)
    {
        BasicConfigurator.configure(); // logger configuration
        Logger logger = Logger.getLogger(Test.class);
        logger.setLevel(Level.DEBUG);
        logger.info("Hello");
    }
}

Est-il possible que votre code soit réellement exécuté trois fois?

Dans mon cas, j’ajoutais un nouvel appender chaque fois que j’appelais BasicConfigurator.configure ().

Je l'ai résolu en réinitialisant la configuration:

BasicConfigurator.resetConfiguration() //reset first
BasicConfigurator.configure() // then configure

Je dois avouer que je ne comprends pas bien ce qui se passe, mais cela a sûrement résolu mon problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top