From 97533e7c3d91b7c579616962106faa0ec3ff9258 Mon Sep 17 00:00:00 2001 From: Stephan Date: Wed, 8 Jul 2015 21:28:59 +0200 Subject: [PATCH] UmbracoApplication - log unhandled exceptions --- src/Umbraco.Core/UmbracoApplicationBase.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/Umbraco.Core/UmbracoApplicationBase.cs b/src/Umbraco.Core/UmbracoApplicationBase.cs index b98e3935ee..33c3d58689 100644 --- a/src/Umbraco.Core/UmbracoApplicationBase.cs +++ b/src/Umbraco.Core/UmbracoApplicationBase.cs @@ -32,6 +32,19 @@ namespace Umbraco.Core /// internal void StartApplication(object sender, EventArgs e) { + //take care of unhandled exceptions - there is nothing we can do to + // prevent the entire w3wp process to go down but at least we can try + // and log the exception + AppDomain.CurrentDomain.UnhandledException += (_, args) => + { + var exception = (Exception) args.ExceptionObject; + var isTerminating = args.IsTerminating; // always true? + + var msg = "Unhandled exception in AppDomain"; + if (isTerminating) msg += " (terminating)"; + Logger.Error(typeof(UmbracoApplicationBase), msg, exception); + }; + //boot up the application GetBootManager() .Initialize() @@ -150,6 +163,7 @@ namespace Umbraco.Core { get { + // LoggerResolver can resolve before resolution is frozen if (LoggerResolver.HasCurrent && LoggerResolver.Current.HasValue) { return LoggerResolver.Current.Logger;