>The RemotingAppender tries to flush all message in shutdown but if >things go really bad you may be losing some messages, this is true.
There can't be any guarantee anyway that all log messages are written before the application goes down. There are circumstances where the operating system takes over and terminates the application. A popular phenomenon is an application that segmentation faults or when the framework cannot find a shared library when it wants to load it. In these cases the operating system takes over and terminates the application and all loaded assemblies/resources with it without even considering to shutdown the application gracefully. It may well the case that the logging facility is fast enough to persist some events, but I would not rely on it. The best things a developer may do is: 1) Application.Current.DispatcherUnhandledException += (object sender, UnhandledExceptionEventArgs e) => { MessageBox.Show("ouch"); } 2) AppDomain.CurrentDomain.UnhandledException += (object sender, DispatcherUnhandledExceptionEventArgs e) { MessageBox.Show("ouch"); } And hope that the user needs some time to click "ok". :-)