Frage

Ich habe log4j in einem Java-Programm. Ich initialisiert es mit:

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

Aber, während der Ausführung des Programms i erhalten 3 log Aussagen anstelle von einem. Zum Beispiel:

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

anstelle einer Zeile

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

Gibt es irgendwelche zusätzliche Konfigurationen log4j getan werden, um dies zu vermeiden?

War es hilfreich?

Lösung

Ich habe ein ähnliches Verhalten erlebt, und es stellte sich heraus, dass Log4J wurde mehr als einmal konfiguriert; mit dem BasicConfigurator, sondern auch mit einer Datei log4j.xml ich vergessen hatte. Könnte es sein, dass eine zusätzliche es Log4J Konfiguration irgendwo auf dem Classpath?

Andere Tipps

Die meisten wahrscheinlich Sie haben mehr als ein Appen. Siehe das log4j Handbuch (Abschnitt: Appen und Layout):

  

Jede aktivierte Protokollierung Anforderung für einen bestimmten Logger sowie der Appen höher in der Hierarchie zu all Appen in diesem Logger weitergeleitet werden.

Sie können versuchen, die additiv Flag auf false setzen.

Nun, Sie haben nicht gezeigt, wie Ihr Programm ausgeführt wird. Hier ist ein komplettes Programm, das nur eine einzige Zeile zeigt:

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");
    }
}

Ist es möglich, dass Ihr Code wirklich dreimal ausgeführt wird?

In meinem Fall wurde ich das Hinzufügen eines neuen appender jedes Mal, wenn ich die BasicConfigurator.configure () aufgerufen.

Ich löste es Reseting die Konfiguration:

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

Ich muss gestehen, dass ich nicht klar verstehen, was los ist, aber es gelöst sicherlich mein Problem.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top