diff --git a/NzbDrone.Common/Instrumentation/GlobalExceptionHandlers.cs b/NzbDrone.Common/Instrumentation/GlobalExceptionHandlers.cs new file mode 100644 index 000000000..24fb64c61 --- /dev/null +++ b/NzbDrone.Common/Instrumentation/GlobalExceptionHandlers.cs @@ -0,0 +1,31 @@ +using System; +using System.Threading.Tasks; +using NLog; + +namespace NzbDrone.Common.Instrumentation +{ + public static class GlobalExceptionHandlers + { + private static readonly Logger Logger = LogManager.GetLogger("Global"); + + public static void Register() + { + ExceptronTarget.Register(); + + AppDomain.CurrentDomain.UnhandledException += ((s, e) => AppDomainException(e.ExceptionObject as Exception)); + TaskScheduler.UnobservedTaskException += ((s, e) => TaskException(e.Exception)); + } + + private static void TaskException(Exception exception) + { + Console.WriteLine("Task Error: {0}", exception); + Logger.Error("Task Error: " + exception.Message, exception); + } + + private static void AppDomainException(Exception exception) + { + Console.WriteLine("EPIC FAIL: {0}", exception); + Logger.FatalException("EPIC FAIL: " + exception.Message, exception); + } + } +} \ No newline at end of file diff --git a/NzbDrone.Common/NzbDrone.Common.csproj b/NzbDrone.Common/NzbDrone.Common.csproj index c81ca4552..62a0028a6 100644 --- a/NzbDrone.Common/NzbDrone.Common.csproj +++ b/NzbDrone.Common/NzbDrone.Common.csproj @@ -103,6 +103,7 @@ + diff --git a/NzbDrone.Update/Program.cs b/NzbDrone.Update/Program.cs index 21ed7ce2c..c9e29c9a9 100644 --- a/NzbDrone.Update/Program.cs +++ b/NzbDrone.Update/Program.cs @@ -27,10 +27,9 @@ namespace NzbDrone.Update try { Console.WriteLine("Starting NzbDrone Update Client"); + GlobalExceptionHandlers.Register(); + new LogglyTarget(new EnvironmentProvider()).Register(LogLevel.Debug); - - ExceptronTarget.Register(); - _container = UpdateContainerBuilder.Build(); logger.Info("Updating NzbDrone to version {0}", _container.Resolve().Version); @@ -40,7 +39,6 @@ namespace NzbDrone.Update { logger.FatalException("An error has occurred while applying update package.", e); } - } public void Start(string[] args) diff --git a/NzbDrone/AppMain.cs b/NzbDrone/AppMain.cs index c306a96e4..8def08d22 100644 --- a/NzbDrone/AppMain.cs +++ b/NzbDrone/AppMain.cs @@ -16,12 +16,13 @@ namespace NzbDrone { try { + GlobalExceptionHandlers.Register(); + new LogglyTarget(new EnvironmentProvider()).Register(LogLevel.Warn); - ExceptronTarget.Register(); + logger.Info("Starting NzbDrone Console. Version {0}", Assembly.GetExecutingAssembly().GetName().Version); - AppDomain.CurrentDomain.UnhandledException += ((s, e) => AppDomainException(e.ExceptionObject as Exception)); //Check if full version .NET is installed. try @@ -61,14 +62,9 @@ namespace NzbDrone } catch (Exception e) { - AppDomainException(e); + logger.FatalException("Epic Fail " + e.Message, e); } } - public static void AppDomainException(Exception exception) - { - Console.WriteLine("EPIC FAIL: {0}", exception); - logger.FatalException("EPIC FAIL: " + exception.Message, exception); - } } } \ No newline at end of file