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?

Sie würden zuerst müssen Sie die Verwendung log4j. Die catch-Anweisung zeigen Sie a) nicht verwenden log4j; b) nicht selbst drucken, überall und von allem. Es füllt lediglich einen StringWriter mit dem stacktrace.
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

Schreibe einen Kommentar