Konvertieren Sie e.printStackTrace() zu verwenden log4j statt
Ich bin ganz neu log4j. Ich will nicht, um zu zeigen, Ausnahme-stack-trace in meine log-Datei wie
java.lang.IllegalArgumentException: nodeRef is a mandatory parameter
at org.alfresco.util.ParameterCheck.mandatory(ParameterCheck.java:42)
Diese Ausnahmen sind schriftlich direkt an die Konsole mithilfe e.printStackTrace()
wie
try {
//something
} catch(Exception e) {
StringWriter stack = new StringWriter();
e.printStackTrace(new PrintWriter(stack));
logger.debug("Caught exception; decorating with appropriate status template : " + stack.toString());
}
Ich bin jetzt customizing einer Open-Source - Projekt, nicht schreiben Sie alle meine Programme von mir.
So ist es unmöglich zu entfernen e.printStackTrace();
in allen java-Dateien.
Soweit ich weiß, melden die gedruckt werden log4j
mit logger kann so konfiguriert werden, durch die Verwendung von log4j Fehler Ebene, wie z.B. info, debug, warn.Aber wie über das schreiben direkt an die Konsole oder Datei?
Wie kann ich konfigurieren-log4j nicht nur drucken exception stacktrace zeigen aber andere Informationen? Gibt es eine Möglichkeit es zu lösen?
Ich habe meinen code. Mein Beispiel verwendet beide e.printStackTrace() und logger.debug(). Es ist nicht von mir geschrieben. Mein Projekt verwendet, dass die jar-Datei, deren angeschlossenen Quelle wird gezeigt, wie das.
Was ich tun würde, ist das erstellen eines PrintStream System zu ersetzen.äh, die schreibt alles, was er bekommt log4j. So können Sie mit System.out oder System.err irgendeiner Weise, die Sie mögen und es tatsächlich verwendet log4j. 😉
InformationsquelleAutor swemon | 2012-08-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den code
ist nur ein Beispiel, völlig falsch Verwendung des Log4j-API. Aber, wenn Sie mit ihm stecken, wird es nichts für Sie zu tun, außer erhöhen Sie den log-level über
debug
und verlassen, die für die gesamte Nachricht.Kann es möglicherweise ein Weg sein, um abschneiden alle log-Meldungen, die würde etwas lindern das problem.
Ich glaube nicht, dass Sie Graben, dass code. Nichts ist hier überflüssig;
printStackTrace
in deinem Beispiel nicht wirklich drucken nichts. Der Programmierer wollte nur einen stacktrace angehängt, um einedebug
log-Meldung, wo Log4J nicht unterstützenlog.debug(msg, exc)
---und das aus gutem Grund.InformationsquelleAutor Marko Topolnik
Logger#Fehler
InformationsquelleAutor ollins
InformationsquelleAutor subodh