From 03621a86646597991866edb565b1978c8d544699 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Sun, 12 Nov 2017 15:02:07 +0100 Subject: [PATCH] Added AppBuilder methods for logging. You can now set up serilog logging to `Debug` or `Trace` by calling e.g.: ``` AppBuilder.Configure - - - - diff --git a/build/Serilog.props b/build/Serilog.props index e9bd39f6af..a814cf998d 100644 --- a/build/Serilog.props +++ b/build/Serilog.props @@ -1,5 +1,7 @@  - + + + diff --git a/samples/BindingTest/App.xaml.cs b/samples/BindingTest/App.xaml.cs index 42e5716541..ccad1d0ba9 100644 --- a/samples/BindingTest/App.xaml.cs +++ b/samples/BindingTest/App.xaml.cs @@ -16,22 +16,11 @@ namespace BindingTest private static void Main() { - InitializeLogging(); - AppBuilder.Configure() .UsePlatformDetect() .UseReactiveUI() + .LogToDebug() .Start(); } - - private static void InitializeLogging() - { -#if DEBUG - SerilogLogger.Initialize(new LoggerConfiguration() - .MinimumLevel.Warning() - .WriteTo.Trace(outputTemplate: "{Area}: {Message}") - .CreateLogger()); -#endif - } } } diff --git a/samples/ControlCatalog.Desktop/Program.cs b/samples/ControlCatalog.Desktop/Program.cs index 20bf4ed342..b151cabf43 100644 --- a/samples/ControlCatalog.Desktop/Program.cs +++ b/samples/ControlCatalog.Desktop/Program.cs @@ -12,8 +12,6 @@ namespace ControlCatalog { static void Main(string[] args) { - InitializeLogging(); - // TODO: Make this work with GTK/Skia/Cairo depending on command-line args // again. BuildAvaloniaApp().Start(); @@ -23,18 +21,7 @@ namespace ControlCatalog /// This method is needed for IDE previewer infrastructure /// public static AppBuilder BuildAvaloniaApp() - => AppBuilder.Configure().UsePlatformDetect(); - - // This will be made into a runtime configuration extension soon! - private static void InitializeLogging() - { -#if DEBUG - SerilogLogger.Initialize(new LoggerConfiguration() - .MinimumLevel.Warning() - .WriteTo.Trace(outputTemplate: "{Area}: {Message}") - .CreateLogger()); -#endif - } + => AppBuilder.Configure().LogToDebug().UsePlatformDetect(); private static void ConfigureAssetAssembly(AppBuilder builder) { diff --git a/samples/RenderTest/Program.cs b/samples/RenderTest/Program.cs index 514771097f..a1a2b8c410 100644 --- a/samples/RenderTest/Program.cs +++ b/samples/RenderTest/Program.cs @@ -12,25 +12,13 @@ namespace RenderTest { static void Main(string[] args) { - InitializeLogging(); - // TODO: Make this work with GTK/Skia/Cairo depending on command-line args // again. AppBuilder.Configure() .UsePlatformDetect() .UseReactiveUI() + .LogToDebug() .Start(); } - - // This will be made into a runtime configuration extension soon! - private static void InitializeLogging() - { -#if DEBUG - SerilogLogger.Initialize(new LoggerConfiguration() - .MinimumLevel.Warning() - .WriteTo.Trace(outputTemplate: "{Area}: {Message}") - .CreateLogger()); -#endif - } } } diff --git a/samples/VirtualizationTest/Program.cs b/samples/VirtualizationTest/Program.cs index e9156d803f..097f0cfdc7 100644 --- a/samples/VirtualizationTest/Program.cs +++ b/samples/VirtualizationTest/Program.cs @@ -13,22 +13,11 @@ namespace VirtualizationTest { static void Main(string[] args) { - InitializeLogging(); - AppBuilder.Configure() .UsePlatformDetect() .UseReactiveUI() + .LogToDebug() .Start(); } - - private static void InitializeLogging() - { -#if DEBUG - SerilogLogger.Initialize(new LoggerConfiguration() - .MinimumLevel.Warning() - .WriteTo.Trace(outputTemplate: "{Area}: {Message}") - .CreateLogger()); -#endif - } } } diff --git a/src/Avalonia.Logging.Serilog/Avalonia.Logging.Serilog.csproj b/src/Avalonia.Logging.Serilog/Avalonia.Logging.Serilog.csproj index b9fa2f208b..5aa2cd67ba 100644 --- a/src/Avalonia.Logging.Serilog/Avalonia.Logging.Serilog.csproj +++ b/src/Avalonia.Logging.Serilog/Avalonia.Logging.Serilog.csproj @@ -28,6 +28,7 @@ + \ No newline at end of file diff --git a/src/Avalonia.Logging.Serilog/SerilogExtensions.cs b/src/Avalonia.Logging.Serilog/SerilogExtensions.cs new file mode 100644 index 0000000000..6abc7e4684 --- /dev/null +++ b/src/Avalonia.Logging.Serilog/SerilogExtensions.cs @@ -0,0 +1,51 @@ +using System; +using Avalonia.Controls; +using Serilog; +using SerilogLevel = Serilog.Events.LogEventLevel; + +namespace Avalonia.Logging.Serilog +{ + /// + /// Extension methods for Serilog logging. + /// + public static class SerilogExtensions + { + /// + /// Logs Avalonia events to the sink. + /// + /// The application class type. + /// The app builder instance. + /// The minimum level to log. + /// The app builder instance. + public static T LogToDebug( + this T builder, + LogEventLevel level = LogEventLevel.Warning) + where T : AppBuilderBase, new() + { + SerilogLogger.Initialize(new LoggerConfiguration() + .MinimumLevel.Is((SerilogLevel)level) + .WriteTo.Debug(outputTemplate: "{Area}: {Message}") + .CreateLogger()); + return builder; + } + + /// + /// Logs Avalonia events to the sink. + /// + /// The application class type. + /// The app builder instance. + /// The minimum level to log. + /// The app builder instance. + public static T LogToTrace( + this T builder, + LogEventLevel level = LogEventLevel.Warning) + where T : AppBuilderBase, new() + { + SerilogLogger.Initialize(new LoggerConfiguration() + .MinimumLevel.Is((SerilogLevel)level) + .WriteTo.Trace(outputTemplate: "{Area}: {Message}") + .CreateLogger()); + return builder; + } + } +}