From 7ff223a1f6156eca72643d6d1c1d30ca3007c7e8 Mon Sep 17 00:00:00 2001 From: Mark van Renswoude Date: Wed, 25 Apr 2018 10:18:55 +0200 Subject: [PATCH] Exception handling in LogFile observer Prevents thread from exiting and not logging anything after --- X2Log.Observer.LogFile.pas | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/X2Log.Observer.LogFile.pas b/X2Log.Observer.LogFile.pas index 4187c32..b592ae2 100644 --- a/X2Log.Observer.LogFile.pas +++ b/X2Log.Observer.LogFile.pas @@ -153,17 +153,24 @@ var begin fileName := GetFileName(AEntry); - ForceDirectories(ExtractFilePath(fileName)); + if not ForceDirectories(ExtractFilePath(fileName)) then + exit; line := TextFormatter.GetText(TX2LogFileTextFormatterHelper.Create(AEntry, fileName, LogDetails), AEntry.Level, AEntry.DateTime, AEntry.Message, AEntry.Category, AEntry.Details); - { Append line to log file } - writer := TFile.AppendText(fileName); try - writer.WriteLine(line); - finally - FreeAndNil(writer); + { Append line to log file } + writer := TFile.AppendText(fileName); + try + writer.WriteLine(line); + finally + FreeAndNil(writer); + end; + except + { If we retry for an amount of time the buffers will just backlog, + so for now just carry on. } + on E:EInOutError do; end; end;