Läuft denn das Logging im gleichen Thread, der dann hängen bleibt/abstürzt?
Ein mir bekanntes Vorgehen ist bspw. das Logging über eine Queue in einen eigenen Thread zu machen.
Da könntest du zum Beispiel explizit FlushBuffer aufrufen, wenn alle anstehenden Log-Meldungen im BufferedFileStream sind.
Wenn der
VCL-Mainthread dann hängen bleibt, hat man zumindest noch die letzten Logmeldungen weggeschrieben.