Dies ist natürlich eine einfache Übung, um die Ausgabe durch einen Filter zu leiten, in diesem Fall den tee
Befehl, der in Microsofts Befehlsinterpreter ähnlich wie in JP Softwares TCC/LE und den (nicht zur C-Shell-Familie gehörenden) Unix-Shells ausgeführt wird:
java -classpath lib.jar com.hertz.test.Blad 2>&1 | tee error-and-output.log
Die unterschiedliche Behandlung der Standardausgabe und des Standardfehlers ist kaum mehr als eine Übung in der Umleitungssyntax, für die dieses Beispiel hier nur eine von mehreren Möglichkeiten ist, und ist eine separate Frage.
java -classpath lib.jar com.hertz.test.Blad 2>&1 1>con | tee error.log
Alles was bleibt, ist die Beschaffung eines tee
Befehl. Es gibt mehrere Möglichkeiten:
- Verwenden Sie einen Port eines Unix
tee
comando. Es gibt mehrere Möglichkeiten. Oft genannt werden GNUWin32 , cygwin y unxutils . Weniger bekannt, aber in mancher Hinsicht besser, sind die Werkzeuge im SFUA-Werkzeugkasten , die im Subsystem für UNIX-basierte Anwendungen die bereits im Lieferumfang von Windows 7 Ultimate Edition und Windows Server 2008 R2 enthalten ist. (Für Windows XP und Windows Server 2003 kann man herunterladen und installieren Dienste für UNIX Version 3.5 .) Dieses Toolkit verfügt über eine große Anzahl von Befehlszeilen-TUI-Tools, von mv
y du
durch die Korn- und C-Shells, um perl
y awk
. Es ist sowohl in den Varianten x86-64 und IA64 als auch in x86-32 erhältlich. Die Programme laufen in der nativen POSIX-Umgebung von Windows und nicht mit Emulator-DLLs (wie z. B. cygwin1.dll
), die Dinge über Win32 schichten. Und ja, das Toolkit hat tee
sowie rund 300 weitere.
- Verwenden Sie eine der vielen nativen Win32
tee
Befehle, die Menschen geschrieben und veröffentlicht haben. Eine davon ist Ritchie Lawrence's MTEE
die, wie Sie sehen können, eine /D
y /T
Optionen, um Zeit- und Datumsstempel zu jeder Zeile hinzuzufügen, die es verarbeitet.
- Verwenden Sie einen Ersatz-Befehlsinterpreter, der über eine eingebaute
TEE
comando. TCC/LE von JP Software ist eine solche. TCC/LE hat eine eingebaute TEE
Befehl . Wie Sie sehen können, hat es auch /D
y /T
Optionen, um Zeit- und Datumsstempel zu jeder Zeile hinzuzufügen, die es verarbeitet.
Nebenbei bemerkt: Es ist besser, wenn Ihre Anwendung die Datums- und Zeitstempel selbst hinzufügt, als wenn sie von der TEE
Befehl. Aus verschiedenen Gründen, die sowohl damit zusammenhängen, wie sich Anwendungen verhalten, wenn ihre Standard-Streams Pipes sind, als auch damit, wie Pipes funktionieren, wird nicht unbedingt jede Zeile der Ausgabe von TEE
zu dem Zeitpunkt, zu dem Ihre Anwendung sie überhaupt erst erzeugt hat. Der Spielraum wirkt sich sowohl auf die relative (zueinander) als auch auf die absolute (zur Wanduhr) Genauigkeit der Zeitstempel aus, die Sie sehen.