Vorteile von Log4j singleton-wrapper?

Ich habe vor kurzem geerbt einige Java-code und integrieren müssen, es in ein Projekt, dass ich auf Arbeit bin. Mein Projekt ist ein service-agent, Prozesse und Transformationen von XML-Nachrichten. Während Sie durch den neuen code, entdeckte ich die folgenden logging-Klasse:

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;

public class MyLogger {

    private static MyLogger instance = null;
    protected final static Logger log = Logger.getLogger(MyLogger.class);

    private MyLogger() {
        super();
    }

    public static MyLogger getInstance(){
        if(instance  == null){
            instance  = new MyLogger();
            BasicConfigurator.configure();
            log.setLevel(Level.ALL);
        }
        return instance;
    }

    public void info(String myclass, String msg) {
        log.info("[" + myclass + "] " + msg);

    }

    public void error(String myclass, String msg, Exception ce) {               
        log.error("[" + myclass + "] " + msg, ce);      
    }

    public void warning(String myclass, String msg) {
        log.warn("[" + myclass + "] " + msg);
    }    
}

Dieser Klasse im Grunde umschließt log4j mit (anderen) singleton. Alle von der Abholzung in den Klassen, die ich brauche, um zu integrieren in etwa so Aussehen:

public class MyClass {
   private final static MyLogger log = MyLogger.getInstance();
   private final static String myclass = MyClass.class.getName();

   ...

   log.info(myclass, "Information message...");   
}

Sehe ich nicht ein offensichtlicher Vorteil der Verwendung eines extra-Klasse für die Protokollierung, so dass ich überlege, refactoring, diesen code zu entfernen, die Klasse MyLogger und melden Sie sich in der folgenden Weise:

import org.apache.log4j.Logger;

public class MyClass {
   private static Logger log = Logger.getLogger(MyClass.class);

   ...

   log.info("Information Message...");     
}

Dies würde die logging-Mechanismus konsistent über das Projekt. Bevor ich das Tue, würde ich gerne wissen, ob es irgendwelche Vorteile einwickeln Log4j mit einer singleton-Klasse, die ich möglicherweise fehlen. Danke!

EDIT: Danke an alle für die hilfreichen Antworten - ich Abholung, mehrere neue Erkenntnisse von jedem. Angenommen, Nathan Hughes' Antwort für den Hinweis auf verlorene Funktion durch verlassen der Klasse intakt - ich hatte angenommen, dass der größte Nachteil das verlassen des singleton allein war einfach code aufblähen. Ich trash der Klasse.

  • Was logging-backend im Projekt verwendet wird?
  • Wie es scheint, der Autor dieses nutzen wollte, log4j, ohne die Vorteile des log4j ' s features
  • wenn Sie Lesen Sie den code org.apache.log4j.Logger.
  • wir sind derzeit mit SyslogAppenders senden alle log-Dateien auf einem zentralen server.
InformationsquelleAutor DrewCo | 2011-07-27
Schreibe einen Kommentar