diff --git a/Avalonia.sln b/Avalonia.sln index c6509817ce..a29f3dd754 100644 --- a/Avalonia.sln +++ b/Avalonia.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.26730.10 +VisualStudioVersion = 15.0.27004.2008 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Base", "src\Avalonia.Base\Avalonia.Base.csproj", "{B09B78D8-9B26-48B0-9149-D64A2F120F3F}" EndProject @@ -155,7 +155,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Props", "Props", "{F3AC8BC1 build\ReactiveUI.props = build\ReactiveUI.props build\Rx.props = build\Rx.props build\Serilog.props = build\Serilog.props - build\Serilog.Sinks.Trace.props = build\Serilog.Sinks.Trace.props build\SharpDX.props = build\SharpDX.props build\SkiaSharp.Desktop.props = build\SkiaSharp.Desktop.props build\SkiaSharp.props = build\SkiaSharp.props diff --git a/build/Serilog.Sinks.Trace.props b/build/Serilog.Sinks.Trace.props deleted file mode 100644 index ef79fd7669..0000000000 --- a/build/Serilog.Sinks.Trace.props +++ /dev/null @@ -1,5 +0,0 @@ - - - - - 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; + } + } +}