Console in Textdatei exportieren

gordonsky

Mitglied
Hallo,

um evt. Fehler zu erkennen, würde ich gern immer den Consolenausschrieb abspeichern wenn das Progamm fertig ist.

Aktuel habe ich überhaupt keinen Ansatz.

Kann mir da jemand auf die Sprünge helfen?
 

httpdigest

Top Contributor
Die hier ideale Lösung hängt ganz vom Deployment-Modell deiner Anwendung ab. Wenn es als Service z.B. in einer Container-Orchestrierung wie Kubernetes oder in einer anderen Cloud-Plattform läuft, dann gibt es dort schon Logging-Agents, die alles das, was der Prozess nach stdout/stderr schreibt, aufzeichnen und in dem Logging-Tool der Plattform speichern.

Wenn es "einfach nur" ein Programm ist, was du lokal oder auf einem Server Maschine ausführst, dann könntest du einfach z.B. einen Shell-Redirect-Operator (>) verwenden, um stdout/stderr in eine Datei zu schreiben:
Code:
java -jar mein.jar >stdout.txt 2>stderr.txt

Andere aber mehr invasive Möglichkeiten wären, dein Programm selbst anzupassen, und eine Logging-Library zu verwenden.
 

KonradN

Super-Moderator
Mitarbeiter
Um die Antwort von @httpdigest noch etwas zu ergänzen: Damit man die Ausgabe auch noch sehen kann und nicht nur alles umleitet könnte man Tools wie tee nutzen.

Und wenn es mehr um kleine Spielereien geht, dann kann man natürlich auch System.out und System.err ersetzen um dann alle Aufrufe zu System.in und System.out auch noch in eine Datei zu schreiben. Das könnte dann ungefähr so aussehen:
Java:
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;

public class DualOutput {

    public static void main(String[] args) throws IOException {
        FileOutputStream fileOut = new FileOutputStream("output.log");
        
        PrintStream dualOut = new PrintStream(new DualStream(System.out, new PrintStream(fileOut, true)));
        PrintStream dualErr = new PrintStream(new DualStream(System.err, new PrintStream(fileOut, true)));

        System.setOut(dualOut);
        System.setErr(dualErr);

        System.out.println("Dies ist eine Nachricht auf System.out");
        System.err.println("Dies ist eine Nachricht auf System.err");
    }

    public static class DualStream extends PrintStream {
        private final PrintStream stream1;
        private final PrintStream stream2;

        public DualStream(PrintStream stream1, PrintStream stream2) {
            super(stream1);
            this.stream1 = stream1;
            this.stream2 = stream2;
        }

        @Override
        public void write(int b) {
            stream1.write(b);
            stream2.write(b);
        }

        @Override
        public void write(byte[] buf, int off, int len) {
            stream1.write(buf, off, len);
            stream2.write(buf, off, len);
        }

        @Override
        public void flush() {
            stream1.flush();
            stream2.flush();
        }

        @Override
        public void close() {
            stream1.close();
            stream2.close();
        }
    }
}

Aber wie gesagt: Das ist nicht mehr wie eine kleine Spielerei. Wenn man mehr wie eine Spielerei machen will, dann ist die zielführende Aussage aus meiner Sicht ganz klar:
und eine Logging-Library zu verwenden.
 

Oneixee5

Top Contributor
und eine Logging-Library zu verwenden.
Eine Logging-Library ist nicht unbedingt notwendig. Java selbst stellt auch Logging-Funktionen zu Verfügung.
Java:
package home.playground;

import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;

public class Main {

    public static void main(final String[] args) {
        final Logger logger = initLoggerGlobal();
        final LogTester tester = new LogTester();
        try {
            tester.hello("Hello, World!");
            tester.hello("Hello, Logging ...");
            tester.hello(null); // cause exception
        } catch (final IllegalArgumentException e) {
            logger.severe("IllegalArgumentException: " + e.getMessage());
        }
    }

    /**
     * Initializes and configures the global logger to write messages to a file
     * named "log.txt".
     * The logger is set to handle all log levels (from FINEST to SEVERE).
     *
     * @return The configured global logger instance.
     */
    private static Logger initLoggerGlobal() {

        final Logger logger = Logger.getGlobal();

        // File handler set to show all messages (from FINEST to SEVERE)
        FileHandler fileHandler = null;
        try {
            fileHandler = new FileHandler("log.txt", true);
            fileHandler.setLevel(Level.ALL);
            fileHandler.setFormatter(new SimpleFormatter());
        } catch (final Exception e) {
            e.printStackTrace();
        }

        logger.addHandler(fileHandler);
        logger.severe("This is a SEVERE error message");
        logger.warning("This is a WARNING message");
        logger.info("This is an INFO message");
        logger.config("This is a CONFIG message");
        logger.fine("This is a FINE debug message");
        logger.finer("This is a FINER debug message (more detailed)");
        logger.finest("This is a FINEST debug message (most detailed)");
        return logger;
    }
}

class LogTester {

    final Logger logger = Logger.getLogger(this.getClass().getName());

    /**
     * This function is responsible for logging a message with the INFO level.
     *
     * @param message The message to be logged. It cannot be null.
     *
     * @throws IllegalArgumentException If the provided message is null.
     *
     * @return This function does not return any value.
     */
    void hello(final String message) {
        if (message == null) {
            throw new IllegalArgumentException("Message cannot be null");
        }
        logger.info(message);
    }
}
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
HerrBolte Seltsamer Fehler nur in der Windows- und nicht in der Java-Console O_O Allgemeine Java-Themen 16
F Java Console Allgemeine Java-Themen 2
M Console geht nicht auf (Windows 10) Allgemeine Java-Themen 3
KeVoZ_ Bestimmte Zeile aus Console finden & auslesen Allgemeine Java-Themen 2
X Console mit Argument öffnen? Allgemeine Java-Themen 10
J Console aufrufen Allgemeine Java-Themen 1
X System.out/err(Die Console) in JTextArea ausgeben Allgemeine Java-Themen 2
Uzi21 Frage zu NetBeans ( Console) Allgemeine Java-Themen 11
M HTML-Code von Webseite über Browser oder Console auslesen?? Allgemeine Java-Themen 5
S Kommentare in Console Allgemeine Java-Themen 6
N Input/Output Verhindern, dass log-Einträge auf Console erscheinen Allgemeine Java-Themen 2
M Compilieren auf der COnsole bzw batch Allgemeine Java-Themen 3
nrg Java Observer in SysTray laufen lassen / Console schließen Allgemeine Java-Themen 2
J Java Console in LogDatei schreiben. Allgemeine Java-Themen 6
T JMX Console als Webapplikation Allgemeine Java-Themen 2
J Process auf Console anzeigen lassen. Allgemeine Java-Themen 5
G Batch ohne Console? Allgemeine Java-Themen 6
A Dos Console auslesen Allgemeine Java-Themen 8
M Ausgabe in Console formatieren`? Allgemeine Java-Themen 12
T Löschen der Console Allgemeine Java-Themen 1
E String auf der Console rechtsbündig ausrichten Allgemeine Java-Themen 10
B Console Anwedung mit Rewrite auf ein System.out.println ? Allgemeine Java-Themen 3
G mit javac in Console mehrere java Files compilieren Allgemeine Java-Themen 6
S Einiges zur Java-Console Allgemeine Java-Themen 1
O Text aus einer Textdatei rausholen, der zwischen zwei Schlüsselworten steht Allgemeine Java-Themen 4
S Textdatei statt von Dateisystem aus .jar lesen Allgemeine Java-Themen 3
curranux Ausgabe als Textdatei schreiben. Allgemeine Java-Themen 2
killig Textdatei einlesen und in HashMap speichern (duplikate entfernen) Allgemeine Java-Themen 12
B Scanner erkennt keinen Text in Textdatei, obwohl welcher drinsteht Allgemeine Java-Themen 10
M In Textdatei schreiben Allgemeine Java-Themen 3
F Problem beim Einlesen einer Textdatei Allgemeine Java-Themen 12
J Bestimmte Zeile aus Textdatei auslesen Allgemeine Java-Themen 18
OnDemand Download Textdatei falsches Charset Allgemeine Java-Themen 1
K Textdatei als Objekt Allgemeine Java-Themen 4
O JAR Export Textdatei benutze Allgemeine Java-Themen 14
stylegangsta Mehrere html seiten einer Homepage einlesen und als Textdatei ausgeben Allgemeine Java-Themen 14
L Filewriter schreibt Zahlen in Textdatei Allgemeine Java-Themen 2
D Input/Output Zeilen werden "ignoriert" beim Einlesen aus einer Textdatei Allgemeine Java-Themen 3
T Synchronisation einer Textdatei im Groupshare Allgemeine Java-Themen 1
I String einer Textdatei anfügen Allgemeine Java-Themen 2
S Von Wav Datei mit Morsecode in Morsecode als Textdatei Allgemeine Java-Themen 2
R Duplikate aus einer Textdatei entfernen? Allgemeine Java-Themen 20
K Input/Output Ausgabe in Textdatei Allgemeine Java-Themen 7
Iron Monkey Inhalt von JTable in die Textdatei mit StringWidth schreiben Allgemeine Java-Themen 3
J Textdatei auslesen, die gerade benutzt wird Allgemeine Java-Themen 8
P Textdatei aus Ressourcen laden. Allgemeine Java-Themen 8
W Auslesen von Textdatei Allgemeine Java-Themen 16
M gleichzeitiger Zugriff auf eine Textdatei Allgemeine Java-Themen 6
S TextDatei in Panel anzeigen Allgemeine Java-Themen 10
X Textdatei auf gewünschte Anzahl der Zeilen kürzen Allgemeine Java-Themen 2
S Input/Output Latin-9 (ISO 8859-15) Textdatei einlesen Allgemeine Java-Themen 2
L Input/Output Textdatei in Objekte überführen? Allgemeine Java-Themen 4
F In mitten einer Textdatei schreiben Allgemeine Java-Themen 7
N Textdatei in Jar Problem Allgemeine Java-Themen 6
B Leerzeile in Textdatei Allgemeine Java-Themen 3
B Textdatei Zeilen auslesen Allgemeine Java-Themen 7
E BlueJ Daten in Textdatei schreiben Allgemeine Java-Themen 21
D große Textdatei filtern Allgemeine Java-Themen 13
K Textdatei komplett auslesen bis auf 2 Zeilen Allgemeine Java-Themen 2
H Textdatei (1GB) einlesen und verarbeiten Allgemeine Java-Themen 15
S String verschlüsselt in Textdatei speichern Allgemeine Java-Themen 3
E Text ans Ende einer Textdatei anfügen Allgemeine Java-Themen 2
Balbes Dateipfad in den JFileChooser aus Textdatei einlesen Allgemeine Java-Themen 7
S Textdatei mit externen Editor öffnen Allgemeine Java-Themen 8
G Textdatei einlesen unter Windows 7 Allgemeine Java-Themen 4
A Textdatei im Applet einlesen Allgemeine Java-Themen 2
C Textdatei einlesen Allgemeine Java-Themen 3
L Textdatei nach Wörter durchsuchen Allgemeine Java-Themen 3
Psypsy Bits in Textdatei und zurück Allgemeine Java-Themen 3
A Zeilen aus einer Textdatei löschen Allgemeine Java-Themen 6
ModellbahnerTT Problem: Schleife über Textdatei Allgemeine Java-Themen 5
W Auslesen einer Textdatei Allgemeine Java-Themen 2
D HILFE - Textdatei im jar auslesen Allgemeine Java-Themen 10
T Auslesen und schreiben in eine Textdatei.HILFE!HILFE! Allgemeine Java-Themen 23
G Mit FileWriter in Textdatei über jar Allgemeine Java-Themen 4
E textdatei über "öffnen mit" aufrufen Allgemeine Java-Themen 6
A Objekte in Textdatei weiterschreiben Allgemeine Java-Themen 5
M Textdatei auslesen / schreiben (Server) Allgemeine Java-Themen 9
D Textdatei umbenennen Allgemeine Java-Themen 2
C Software für Windows PC mit integierter Db oder Textdatei? Allgemeine Java-Themen 19
G 2 zeilen in textdatei beim auslesen verbinden Allgemeine Java-Themen 10
D Zeilenvorschub aus einer Textdatei rausnehmen Allgemeine Java-Themen 11
J Textdatei oder doch DB? Allgemeine Java-Themen 2
T GUI mit DB oder Textdatei? Allgemeine Java-Themen 11
G Textdatei in String einlesen Allgemeine Java-Themen 2
M Inhalt von Textdatei in Spinner Allgemeine Java-Themen 5
M neue Textdatei DOS/Unix-Format Allgemeine Java-Themen 11
E Zeilenumbruch in einer Textdatei Allgemeine Java-Themen 2
E Zeilenbumbruch in einer Textdatei Allgemeine Java-Themen 3
D Textdatei und JTextArea Allgemeine Java-Themen 5
M Worte aus Textdatei mit Java ersetzen Allgemeine Java-Themen 4
G Unterscheidung: Binär- oder Textdatei Allgemeine Java-Themen 13
B Zeilenumbruch bei Schreiben einer Textdatei Allgemeine Java-Themen 10
M Textdatei per Request lesen? Allgemeine Java-Themen 2
L Textdatei einlesen und verändern Allgemeine Java-Themen 3
M Problem: Textdatei einlesen Allgemeine Java-Themen 2
Y Einlesen & Ausgeben einer Textdatei _2 Allgemeine Java-Themen 3
Y Einlesen & Ausgeben einer Textdatei Allgemeine Java-Themen 5
M Fehler beim öffnen einer 20 mb Textdatei im sign. Applet Allgemeine Java-Themen 5
byte Erste Zeile einer Textdatei entfernen Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben