User since
2003-09-04
2
Artikel
BenutzerIn
Den Versand der Formulare auf meiner Homepage erledige ich mit dem Modul Net::SMTP. Das funktioniert so weit ganz gut.
Allerdings möchte ich die Ausgabe der diversen Meldungen beim Senden mit eingeschalteten debug-mode nicht auf dem Screen sehen, sondern in eine Log-Datei umleiten. Ein erster Versuch mit select auf eine geöffnete Datei hat nicht geklappt.
Sinn & Zweck: Protokollierung des erfolgreichen Absendens an den smtp-server.
Vielleicht kennt jemand auch eine andere Möglichkeit, diese Protokollierung vorzunehmen. Ich habe bisher nur die Idee, den Debug-Mode einzuschalten, dessen Ausgabe aber in eine Datei umzuleiten. Nur habe ich letzteres noch nicht geschafft.
Wie kann ich dies bewirken.
Besten Dank im Voraus.
Gruß,
frank.
User since
2003-08-06
2246
Artikel
ModeratorIn
Wenn die Ausgaben auf STDOUT oder STDERR kommen, mußt Du zuvor
ein Filehandle namens STDOUT oder STDERR schließen, dann erneut mit einer Datei mit open (
perlopentut) öffnen.
close STDOUT; open(STDOUT, "> test.STDOUT") or die $!; print "blah"
oder
close STDERR; open(STDERR, "> test.STDERR") or die $!; warn "blah"
User since
2003-08-04
5246
Artikel
ModeratorIn
bei STDOUT reicht auch ein select, z.B.
open (LOG, ">" . $logfile) or die $!;
my $oldFH = select(LOG);
print "das hier geht ins log$/ ";
select ($oldFH);
User since
2003-09-04
2
Artikel
BenutzerIn
besten dank!
a) der vorherige close war wichtig
b) STDERR war mir nicht bekannt und debug-ausgaben landen darin und nicht im STDOUT (warum auch immer)
User since
2003-08-04
5872
Artikel
ModeratorIn
Ganz einfach, damit Du zwischen Fehlermeldungen oder Statusmeldungen und den gelieferten Daten unterscheiden kannst. Das ist bei sehr vielen Programmen so. Diese kannst Du dann mit Ausgabeumlenkung in eine Datei starten, die Statusanzeigen sind dann aber trotzdem auf dem Bildschirm zu sehen und verunzieren nicht Deine Daten. (Es sei denn, Du leitest die mit 2> auch um ...)\n\n
<!--EDIT|Crian|1063028627-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite