af0815 hat geschrieben: Di 21. Jan 2025, 14:15
Das teuerste ist immer ein IO auf Ebene des Filesystems, das lernt man in allen DB Admin Kursen als erstes. Deswegen ist auch immer zu überlegen wie und was man wirklich loggen muß.
ist klar - das erste Provisorium ist aber auch immer das permanenteste.
Ist es nur Applikationsspezifisch und braucht nicht persistent eine Reboot/Absturz des Rechners zu überleben, so ist eine Ram-Disk nicht unbedingt das schlechteste, wenn man es auch von der Größe her planen kann. Ev. kann man einen extra Prozess drauf ansetzen ältere Logs von dem Ramdrive auf ein anderes Medium zu verschieben und dort auch mit LogRotate für Ordnung zu sorgen.
Bei LazLogger muss man nicht unbedingt in eine Datei loggen, man kann zur unmittelbaren Fehlersuche das ganze stattdessen auf die Konsole loggen. Das geht auch unter Windows ohne Probleme und es erkennt, wenn gerade keine Konsole offen ist und stürzt deswegen nicht gleich ab, wie schon öfters bei selbstgebastelten Versionen mit Writeln zu beobachten ist.
Mann merkt schon, das das auch von den Entwicklern von Lazarus selbst verwendet wird.
Ich hab heute morgen mal noch etwas mit LazLogger gespielt. Eine Frage stellt sich in meiner Situation.
Gibt es die Option, auf die geschriebene Zeile im File zu warten? Wenn ich meine Applikation in Lazarus schließe, ist die letzte Zeile des logfiles immer unterbrochen an einer undefinierbaren stelle.
Hintergrund:
Ich habe mehrere Kunden die eine Applikation verwenden, bei einem hängt sich die Applikation auf.
Für mich ist der entscheidende Teil, dass ich sicherstellen kann, dass der api-call der zum Abstuz führt auch in der log steht.
Selbst habe ich schon viele Wege versucht, diesen Fehler zu finden, bin aber ratlos - keine Testmöglichkeiten.
Der api-call ist deshalb wichtig, da diese aus einem Fremdsystem kommen.
Ich könnte auch nur diesen Teil in eine Textfile schreiben, dann fehlen aber die Daten dahinter - sind aber reproduzierbar.