2012-03-26 19 views
1

Ich verwende log4j, um das Protokoll meines Programms aufzuzeichnen. Der Code ist wie folgt:Hinzufügen einer Methode zum Klassenobjekt einer Bibliothek

static Logger logger = Logger.getLogger(MyClassName.class); 
logger.error("This is error message"); 

jedoch statt mit error(), ich möchte meine eigene Error-Methode implementieren, das Hinzufügen einige zusätzliche Informationen, zum Beispiel

logger.searcherror("This is error message")  
void searcherror(String mes){ 
    logger.error("[search] "+mes) 
} 

ich implementiert dies durch Proxy-Muster mit:

class Mylogger{ 
    private Logger logger = null; 
    public MyLogger (Logger logger){ 
     this.logger = logger; 
    } 
    public void searcherror(String msg){ 
     logger.error("[search]"+msg); 
    } 
} 

Es ist ein Bug, wenn MyLogger verwenden, wenn ich das Protokoll drucken, indem appender layout: %l Einstellung, die mir die Linie num dieses Protokoll erzählt. Dies wird die Zeilennummer der searcherror() Methode in MyLogger, nicht die tatsächliche Zeile, wenn ich Mylogger.serach("xxxxx") aufrufen, ich nicht, wie es zu beheben. Irgendwelche Vorschläge?

Antwort

1

Sie sollten dem Logger keine Funktionalität hinzufügen. Stattdessen implementieren Sie Ihre benutzerdefinierte (oder sogar ein vorhandenes Layout konfigurieren).

Werfen Sie einen Blick auf dieses Dokument: http://logging.apache.org/log4j/1.2/manual.html

Verwandte Themen