Log-Datei schreiben (Dabei im Notepad betrachten)
-
Moin erstmal zusammen.
Ich wollte von meiner Anwendung eine kleine Logdatei mitschreiben lassen, falls Exceptions entstehen.
Mein Wunsch ist eigentlich, dass diese Textdatei die ganze Zeit über geschrieben wird (und nicht erst ganz zum Schluss) UND, dass ich sie dabei in meinem Notepad++ (Was die Datei ja erstmal ohne Exlusivrechte öffnet) dargestellt wird.
Also quasi das was ich direkt aufm stdout (zb console) sehen würde, wenn ich den Text da raufschieben würde.Mein Problem ist aber nun: Notepad kann die Datei nicht öffnen, so lange meine Anwendung noch mit der Datei arbeitet. Geschrieben wird sie zwar permanent... aber betrachten kann ich sie erst, wenn die Anwendung geschlossen wurde.
Öffnen/Erstellen tu ich die Datei so (unter Verwendung von boost:scoped_ptr):
file_stream.reset( new TFileStream( _File , fmCreate , fmShareDenyNone ) ); stream_writer.reset( new TStreamWriter( file_stream.get() , TEncoding::UTF8, 1024 ) ); stream_writer->AutoFlush = false;
Schreibe tu ich die Text dann so:
stream_writer->WriteLine( _Text ); stream_writer->Flush();
Was mache ich für einen stumpfen Fehlern? oO
Vielen Dank schonmal.
Beste Grüße
-
Ich habe das mal so gelöst, indem ich nicht über Filestream gegangen bin, sondern über fopen, fprintf und fclose:
[code] FILE *f = fopen(logdatei,"a+"); fprintf(f,"%s\n",message); fclose(f); [/code]
Aber um auf deine Frage zurückzukommen: Der filestream muss nach dem Schreiben noch geschlossen werden. Normalerweise passiert das, wenn du das Filestream- Objekt zerstörst.
-
Nunja, ich dachte da es ein "Stream" ohne exclusive Schreibe/Leserechte an der Datei ist, dass das irgendwie geht.
Ich schließ den Kram schon vernünftig... aber halt nicht nach jedem Schreiben
-
Hallo,
Das hiernew TFileStream( _File , fmCreate , fmShareDenyNone )
sollte doch eher so aussehen
new TFileStream( _File , fmCreate | fmShareDenyNone )
sonst stimmt dein Mode ja nicht.
-
You are right.
Haha, oh man... ich fragte doch "Welchen _stumpfen_ Fehler mache ich ?"
Vielen Dank.