2 Stimmen

Java-Ausgabe in eine Datei drucken

Wie kann man die Java-Ausgabe sowohl auf der Shell-Konsole als auch gleichzeitig in einer Datei ausgeben? ist das möglich?

6voto

Howard Punkte 37723

Sie können die folgenden Zeilen in den Anfang Ihres Programms einfügen:

final PrintStream origout = System.out;
final PrintStream fileout = new PrintStream(file);
System.setOut(new PrintStream(new OutputStream() {
    @Override
    public void write(int b) throws IOException {
        origout.write(b);
        fileout.write(b);
    }
}));

2voto

sverre Punkte 6560

Sie können verwenden System.setOut() umleiten System.Out zu einer benutzerdefinierten OutputStream das seine Ausgabe sowohl auf der Konsole als auch in einer Datei dupliziert.

0voto

rich Punkte 18046

Sie können in eine Konsole schreiben. Und in eine Datei schreiben. Sie können die Threads getrennt voneinander ausführen, damit sie nicht voneinander abhängig sind.

Es gibt keine API für beides gleichzeitig, die mir bekannt ist (nicht, dass das zu viel sagt, es sollte trivial sein, eine zu schreiben).

Edit: Habe ich das falsch verstanden? Meinen Sie den Java-Code oder nur die Ausgabe der Java-Binärdatei auf der Konsole und in einer Datei? In diesem Fall könnten Sie etwas tun wie:

java Main 2>&1 | tee -a Load.log

0voto

Matt Ball Punkte 343109

Sie können dies mit einer SLF4J Implementierung, wie Logback . Auf diese Weise sendet JBoss (standardmäßig) die Ausgabe an die Konsole und an eine Protokolldatei.

0voto

Robin Green Punkte 30622

Der einfachste Weg (weil er keine echte Programmierung erfordert) ist die Verwendung der tee Befehl in Linux, Mac OS X oder Windows Powershell, wie folgt:

java MyProg | tee outputfile.txt

Dies gilt für jede Programmiersprache, nicht nur für Java.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X