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?