diff --git a/src/SiteMonitor/Program.cs b/src/SiteMonitor/Program.cs index d0cbb2d..27f6431 100644 --- a/src/SiteMonitor/Program.cs +++ b/src/SiteMonitor/Program.cs @@ -1,16 +1,37 @@ using System; +using System.IO; using Avalonia; using Avalonia.ReactiveUI; +using log4net; +using log4net.Config; + namespace SiteMonitor; internal sealed class Program { + /// + /// The logger. + /// + private static readonly ILog LOG = LogManager.GetLogger(typeof(Program)); + // Initialization code. Don't use any Avalonia, third-party APIs or any // SynchronizationContext-reliant code before AppMain is called: things aren't initialized // yet and stuff might break. [STAThread] public static void Main(string[] args) { +#if DEBUG + XmlConfigurator.Configure(new FileInfo("log4net.debug.config")); +#else + XmlConfigurator.Configure(new FileInfo("log4net.config")); +#endif + + LOG.Info("Started application"); + + AppDomain.CurrentDomain.UnhandledException += (_, exceptArgs) => { + LOG.Fatal("Unhandled exception", exceptArgs.ExceptionObject as Exception); + }; + BuildAvaloniaApp() .StartWithClassicDesktopLifetime(args); } diff --git a/src/SiteMonitor/Views/MainWindow.axaml.cs b/src/SiteMonitor/Views/MainWindow.axaml.cs index 8849cb2..3d605b2 100644 --- a/src/SiteMonitor/Views/MainWindow.axaml.cs +++ b/src/SiteMonitor/Views/MainWindow.axaml.cs @@ -2,13 +2,14 @@ using System.Linq; using System.Threading.Tasks; +using Avalonia; using Avalonia.Controls; using Avalonia.Interactivity; using Microsoft.Extensions.DependencyInjection; using Nullinside.Api.Common.Desktop; -#if !DEBUG +#if !RELEASE using Avalonia.Threading; using SiteMonitor.ViewModels; @@ -72,12 +73,12 @@ protected override void OnInitialized() { if (serverVersion.name?.Equals(Constants.APP_VERSION, StringComparison.InvariantCultureIgnoreCase) ?? true) { // Had to add this because code clean up tools were removing the "redundant" return statement. // which was causing the check to always be ignored. -#if !DEBUG +#if !RELEASE return; #endif } -#if !DEBUG +#if !RELEASE var vm = ServiceProvider?.GetRequiredService(); if (null == vm) { return; diff --git a/src/SiteMonitor/log4net.config b/src/SiteMonitor/log4net.config new file mode 100644 index 0000000..bd2408f --- /dev/null +++ b/src/SiteMonitor/log4net.config @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/SiteMonitor/log4net.debug.config b/src/SiteMonitor/log4net.debug.config new file mode 100644 index 0000000..59e6ecd --- /dev/null +++ b/src/SiteMonitor/log4net.debug.config @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file