Thread Warnungen des Programms überwachen und ins error.log des Apache schreiben (54 answers)
Opened by bianca at 2010-02-06 13:52

sid burn
 2010-02-06 17:19
#131939 #131939
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Auch dann muss die ausgabe nicht Synchron sein. Generell wenn mann folgendes hat:

Code (perl): (dl )
1
2
print STDOUT "Ausgabe:\n";
print STDERR "Error\n";


gibt es keine Garantie das "Ausgabe" zuerst auf STDOUT landet als "Error" in STDERR geschrieben wird. Zwar kann man die Bufferung in Perl deaktivieren, das bedeutet aber nicht das der Rest des Betriebsystems deswegen nicht mehr buffert. Das buffert weiterhin und es kann durchaus sein, das die reihenfolge anders sein wird. Sich darauf verlassen sollte man sich jedenfalls nicht.

Ansonsten sehe ich das generell häufig wenn ich Test Dateien laufen lasse und dort neben ausgaben noch warnings ausgebe. Teilweise kommen die warnings an stellen in der ausgabe wo man es nicht erwartet.

Möchte man die Ausgabe Synchron haben ist die absolut einzige Möglichkeit zum gleichen Handle zu schreiben. Zwar gibt es auch hier keine Garantie das es sofort da ist, aber die ausgabe ist ja immer Synchron.

Gerade deswegen hat auch der Befehl "prove" den Schalter "-m" das STDERR auf STDOUT umleitet. So das die Ausgaben defenitiv Synchron geschehen.

Von daher ist die Lösung generell zu schauen ob schon etwas ins "error.log" geschrieben wurde und ob ein Fehler vorhanden war einfach ein weg der von sich aus Fehlerbehaftet ist.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread Warnungen des Programms überwachen und ins error.log des Apache schreiben