Der OutputLogger ist eine Java-Klasse, die alle Ausgaben Ihres Programms sammelt und automatisch in Dateien mit Zeitstempel speichert.
- Automatisches Sammeln: Alle
print,printlnundprintfAufrufe werden sowohl auf der Konsole ausgegeben als auch geloggt - Zeitstempel-Dateinamen: Automatische Generierung von Dateinamen mit aktuellem Datum und Uhrzeit
- Automatisches Speichern: Log wird beim Programmende automatisch gespeichert
- Ordnerstruktur: Erstellt automatisch den gewünschten Output-Ordner
- Git-Integration: Logs werden automatisch von Git ignoriert
// Logger erstellen
OutputLogger logger = new OutputLogger("logs");
// Verwenden wie System.out
logger.println("Hallo Welt!");
logger.printf("Zahl: %d%n", 42);
logger.print("Text ohne Zeilenumbruch");OutputLogger logger = new OutputLogger("logs");
logger.setCustomFilename("mein_test");
// Datei wird z.B. "mein_test_2025-10-07_14-30-25.txt"Ersetzen Sie einfach System.out durch logger:
// Vorher:
System.out.println("Ergebnis: " + result);
// Nachher:
logger.println("Ergebnis: " + result);// Automatische Kategorisierung für Input-Dateien
OutputLogger logger = OutputLogger.createForInputFile("logs", "data/choreo01.txt");
// Erstellt: logs/beispieldateien/choreo01_2025-10-07_14-30-25.txt
// Manuelle Unterordner-Erstellung
OutputLogger logger = new OutputLogger("logs", "mein_unterordner");
// Unterordner nachträglich setzen
logger.setSubDirectory("neuer_unterordner");
// Manuelles Speichern
logger.saveToFile();
// Automatisches Speichern deaktivieren
logger.disableAutoSave();
// Nur ins Log schreiben (nicht auf Konsole)
logger.logOnly("Debug-Information");
// Anzahl der Log-Einträge
int count = logger.getOutputCount();
// Aktueller Output-Pfad
String path = logger.getCurrentOutputPath();Nach der ersten Verwendung wird folgende organisierte Struktur erstellt:
your-project/
├── src/
├── logs/ # Wird automatisch erstellt
│ ├── beispieldateien/ # choreo01.txt, choreo02.txt, etc.
│ │ ├── choreo01_2025-10-07_14-30-25.txt
│ │ ├── choreo02_2025-10-07_14-32-10.txt
│ │ └── choreo03_2025-10-07_14-35-15.txt
│ ├── testdateien/ # choreoA.txt, choreoB.txt, etc.
│ │ ├── choreoA_2025-10-07_15-20-33.txt
│ │ └── choreoB_2025-10-07_15-25-18.txt
│ ├── tests/ # Dateien mit "test" im Namen
│ │ └── test_custom_2025-10-07_16-10-45.txt
│ ├── custom/ # Dateien mit "custom" im Namen
│ │ └── custom_scenario_2025-10-07_16-15-22.txt
│ └── sonstige/ # Alle anderen Dateien
│ └── andere_datei_2025-10-07_16-20-33.txt
└── .gitignore # Logs werden ignoriert
Der Logger kategorisiert Input-Dateien automatisch:
- beispieldateien/:
choreo01.txt,choreo02.txt,choreo03.txt, etc. - testdateien/:
choreoA.txt,choreoB.txt,choreoC.txt, etc. - tests/: Alle Dateien mit "test" im Namen
- custom/: Alle Dateien mit "custom" im Namen
- sonstige/: Alle anderen Dateien
Die .gitignore Datei wurde automatisch erweitert:
\bin
# Output Logger Dateien - nicht in Git einchecken
logs/
*.logDie ChoreoGraph-Klasse nutzt jetzt automatisch die Unterordner-Funktionalität:
// In ChoreoGraph.java wird automatisch verwendet:
logger = OutputLogger.createForInputFile("logs", filePath);Dies erstellt automatisch die richtige Ordnerstruktur basierend auf der Input-Datei.
public class MeinProgramm {
public static void main(String[] args) {
OutputLogger logger = new OutputLogger("logs");
logger.println("=== Programmstart ===");
for (int i = 1; i <= 5; i++) {
logger.printf("Iteration %d%n", i);
}
logger.println("=== Programmende ===");
// Log wird automatisch gespeichert
}
}Die gespeicherten Log-Dateien enthalten:
=== Programmausführung vom 2025-10-07 14:30:25 ===
=== Programmstart ===
Iteration 1
Iteration 2
Iteration 3
Iteration 4
Iteration 5
=== Programmende ===
# Kompilieren
javac src/OutputLogger.java src/MeinProgramm.java
# Ausführen
java -cp src MeinProgramm
# Log-Datei wird automatisch in logs/ erstellt- Historische Aufzeichnung: Alle Testläufe werden automatisch dokumentiert
- Debugging: Einfache Nachverfolgung von Programmabläufen
- Vergleiche: Verschiedene Programmdurchläufe können verglichen werden
- Automatisch: Kein manuelles Kopieren von Konsolenausgaben nötig
- Zeitstempel: Eindeutige Zuordnung von Ausgaben zu Testläufen