Ich habe das Internet durchsucht und habe einige gute Lösungen gefunden, um STDOUT an 2 verschiedene Orte abzureißen. Wie eine Protokolldatei und gleichzeitig auf dem Bildschirm. Hier ist ein Beispiel:Kann ich STDOUT und STDERR an eine Protokolldatei und auch an den Bildschirm in Win32 Perl senden?
use IO::Tee;
my $log_filename = "log.txt";
my $log_filehandle;
open($log_filehandle, '>>', $log_filename)
or die("Can't open $log_filename for append: $!");
my $tee = IO::Tee->new($log_filehandle, \*STDOUT);
select $tee;
Aber diese Lösung läßt STDERR geht nur auf den Bildschirm, und ich will STDERR gehen sowohl den Bildschirm als auch auf die gleiche Protokolldatei, die STDOUT protokolliert wird. Ist das überhaupt möglich?
Meine Aufgabe ist es, meinen Build-Prozess zu protokollieren, aber ich möchte es auch wie gewohnt auf dem Bildschirm meiner IDE sehen. Das Protokollieren der Fehlermeldungen ist genauso wichtig wie das Protokollieren der glücklichen Nachrichten. Und es ist keine gute Lösung, die Fehler in einer separaten Protokolldatei zu protokollieren.
Das könnte den Trick machen ... obwohl ich auf eine Lösung gehofft hatte, die keine Nicht-Perl-Dienstprogramme von Drittanbietern verwendet ... noch die Kommandozeile. :-) –
Hier gibt es ein Perl-T-Stück: http://www.robvanderwoude.com/tee.php das könnte helfen, Abhängigkeiten zu reduzieren :) – msandiford
Ich habe es geschrieben geschrieben "vertraue niemals einem Perl-Skript Dazu gehört 'print $ _;' " –