diff --git a/src/Topshelf.Serilog/Logging/SerilogLogWriterFactory.cs b/src/Topshelf.Serilog/Logging/SerilogLogWriterFactory.cs index aeda8828..287e3c42 100644 --- a/src/Topshelf.Serilog/Logging/SerilogLogWriterFactory.cs +++ b/src/Topshelf.Serilog/Logging/SerilogLogWriterFactory.cs @@ -19,14 +19,9 @@ public class SerilogLogWriterFactory : LogWriterFactory { readonly Func _loggerFactory; - SerilogLogWriterFactory(LoggerConfiguration loggerConfiguration) + SerilogLogWriterFactory(ILogger logger) { - _loggerFactory = name => loggerConfiguration.CreateLogger().ForContext("SourceContext", name); - } - - SerilogLogWriterFactory() - { - _loggerFactory = name => Log.ForContext("SourceContext", name); + _loggerFactory = name => logger.ForContext("SourceContext", name); } public LogWriter Get(string name) @@ -38,35 +33,24 @@ public void Shutdown() { } - public static void Use() + public static void Use(ILogger logger) { - HostLogger.UseLogger(new SerilogHostLoggerConfigurator()); - } - - public static void Use(LoggerConfiguration loggerConfiguration) - { - HostLogger.UseLogger(new SerilogHostLoggerConfigurator(loggerConfiguration)); + HostLogger.UseLogger(new SerilogHostLoggerConfigurator(logger)); } [Serializable] public class SerilogHostLoggerConfigurator : HostLoggerConfigurator { - readonly LoggerConfiguration _factory; - - public SerilogHostLoggerConfigurator(LoggerConfiguration factory) - { - _factory = factory; - } + readonly ILogger _logger; - public SerilogHostLoggerConfigurator() + public SerilogHostLoggerConfigurator(ILogger logger) { + _logger = logger; } public LogWriterFactory CreateLogWriterFactory() { - return _factory == null - ? new SerilogLogWriterFactory() - : new SerilogLogWriterFactory(_factory); + return new SerilogLogWriterFactory(_logger); } } } diff --git a/src/Topshelf.Serilog/SerilogConfigurationExtensions.cs b/src/Topshelf.Serilog/SerilogConfigurationExtensions.cs index 15854038..e72b5ed1 100644 --- a/src/Topshelf.Serilog/SerilogConfigurationExtensions.cs +++ b/src/Topshelf.Serilog/SerilogConfigurationExtensions.cs @@ -23,7 +23,7 @@ public static class SerilogConfigurationExtensions /// public static void UseSerilog(this HostConfigurator configurator) { - SerilogLogWriterFactory.Use(); + SerilogLogWriterFactory.Use(Log.Logger); } /// @@ -31,7 +31,15 @@ public static void UseSerilog(this HostConfigurator configurator) /// public static void UseSerilog(this HostConfigurator configurator, LoggerConfiguration loggerConfiguration) { - SerilogLogWriterFactory.Use(loggerConfiguration); + SerilogLogWriterFactory.Use(loggerConfiguration.CreateLogger()); + } + + /// + /// Configures Topshelf to use Serilog for logging, using the given root logger to create loggers. + /// + public static void UseSerilog(this HostConfigurator configurator, ILogger rootLogger) + { + SerilogLogWriterFactory.Use(rootLogger); } } }