Redirect System.out.println
Meine Anwendung hat viele System.aus.println () - Anweisungen.
Will ich fangen Nachrichten von println und senden Sie es an den standard-logger (Log4j, JUL usw).
Wie zu tun ?
InformationsquelleAutor der Frage EK. | 2010-07-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der System-Klasse hat eine
darlegen
undsetErr
die verwendet werden können, ändern Sie die Ausgabe-stream um, beispielsweise, eine neuePrintStream
mit einer UnterlageFile
oder, in diesem Fall wahrscheinlich ein anderer stream verwendet Ihre logging-subsystem der Wahl.Halten Sie daran, Sie können auch zu sich selbst in Schwierigkeiten, wenn Sie jemals konfigurieren Sie Ihre logging-Bibliothek für die Ausgabe auf der standard-Ausgabe oder Fehler (unendliche Rekursion geben, möglicherweise).
Wenn das der Fall ist, können Sie gerade gehen wollen, und ersetzen Sie Ihre
System.out.print
-type-Anweisungen mit realen Protokollierung der Anrufe.InformationsquelleAutor der Antwort paxdiablo
Hatte ich ein ähnliches Bedürfnis einmal. Ich brauchte zum abfangen der Ausgabe von einigen 3rd-party-Komponente und reagieren auf eine Fehlermeldung.
Das Konzept sieht wie folgt aus:
InformationsquelleAutor der Antwort Wizard of Kneup
Die bessere Lösung ist, gehen Sie durch und ändern Sie alle die println-Anweisungen verwenden Sie ein geeignetes logging-Bibliothek. Was Sie zu tun versuchen, ist ein großer hack.
InformationsquelleAutor der Antwort Stefan Kendall
Hier ist, wie zu erfassen, druckt Sie auf System.und dann setzen die Dinge wieder in Ordnung :
InformationsquelleAutor der Antwort Vic Seedoubleyew
erweitern PrintStream ist eine schlechte Lösung, da Sie zum überschreiben aller
print()
undprintln()
Methoden. Stattdessen können Sie erfassen stream:Jetzt können Sie erfassen, wie diese:
InformationsquelleAutor der Antwort sergeych
Habe ich die Basis-Idee dieses und es arbeitet fein.
Keine Notwendigkeit, ändern Sie alle das System..### und System.err.### Zeug.
Dieser paar Zeilen wird die Protokollierung aktivieren, ohne weitere code-änderungen:
InformationsquelleAutor der Antwort froes