Frage zu Log-Files
Übersicht

![]() |
CardonicBetreff: Frage zu Log-Files |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi
Ich möchte, dass mein Spiel Log-Files generiert. Ich habe mich gefragt, wie ich das am besten umsetzen kann. Ist es besser, wenn ich beim Start des Spieles eine Datei aufmache und fortwährend während des ganzen Spiels in die Datei hineinschreibe oder wenn das ganze Log z.B. in Types abgespeichert wird und zum Schluss in eine datei geschrieben wird ? Oder muss man das ganz anders angehen ? Würde mich über Vorschläge etc. freuen. Vielen Dank im Voraus. mfg Cardonic |
||
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet. |
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich bin mir nicht sicher, aber wenn du viel in die Datei schreiben willst, lohnt es sich eher, die Datei geöffnet zu lassen und reinzuschreiben, während das Programm läuft. | ||
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn du es nur in Types speicherst, musst du auch bedenken, dass evt. nichts gespeichert wird, falls das Programm abschmiert oder es Zwangsbeendet wird. | ||
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7 |
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Könntest auch beides kombinieren: Im Speicher zwischenspeichern bis eine bestimmte Anzahl Zeilen erreicht wurde, und dann die paar Zeilen auf einmal schreiben.
So wird der Speicher nicht so voll und es wird auch nicht andauernd in die Datei geschrieben. |
||
E. Urbachehemals "Basicprogger" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Auf keinen Fall solltest du die Datei "offen" lassen, da die Daten bei einem Absturz des Programms nicht mehr vorhanden sind. Abstürze sind aber genau das, was man protokollieren möchte, deshalb gibt es nur eine Methode: Jedesmal Stream öffnen und schließen (wenn die Programmiersprache es unterstützt, dann einfach flushen bzw. einen Stream nehmen, der die Daten sofort abspeichert), das geht am besten mit einer "Log-Datei-Instanz":
Code: [AUSKLAPPEN] Global logFile:TLog = CreateLog("log.txt")
logFile.WriteLine("Program started.") Eine Alternative gibt es dennoch: Exceptions Damit könntest du auch den Vorschlag von Jolinah umsetzen. Code: [AUSKLAPPEN] Global logFile:TLog = CreateLog("log.txt")
logFile.WriteLine("Program started.") Try Fehler() Catch e:TBlitzException logFile.WriteLine(e.ToString()) logFile.Close() End Try Einziger Haken bei der Sache: Bei kritischen Fehlern, die nicht von Blitz Max erkannt werden, wird kein Log erstellt. Dies passiert allerdings häufiger als man denkt, weshalb ich bei allen Log-Einträgen den Inhalt des Streams sofort in die Datei schreibe. Es ist nicht die schnellste Methode, aber dafür ist es sicherer. Bei einer Log-Datei ist letzteres allerdings wichtiger und die Geschwindigkeits-Unterschiede sind so gering, dass man dies in Kauf nehmen kann. |
||
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik |
- Zuletzt bearbeitet von E. Urbach am Fr, Apr 13, 2007 16:54, insgesamt 2-mal bearbeitet
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Öffnen und schließen ist vollkommen übertrieben, nach jedem schreiben flushen reicht schon, oder gleich einen Stream erstellen, der nicht gebuffer wird. So machen es, denke ich mal, auch apache und co. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group