Flush logs when crashing.
When the process is running, we use a finally block to call Log.Dispose and flush any outstanding logs to disk before the process exits. This works when we handle any exception in a matching catch block. When the exception is unhandled, then the finally block will not run and instead the process will just exit. To fix this, flush the logs inside a catch block instead before rethrowing the error. This ensures we get logs even when crashing.
This commit is contained in:
@@ -27,6 +27,13 @@ namespace OpenRA.Server
|
||||
{
|
||||
Run(args);
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Flush logs before rethrowing, i.e. allowing the exception to go unhandled.
|
||||
// try-finally won't work - an unhandled exception kills our process without running the finally block!
|
||||
Log.Dispose();
|
||||
throw;
|
||||
}
|
||||
finally
|
||||
{
|
||||
Log.Dispose();
|
||||
|
||||
Reference in New Issue
Block a user