Skip to content

Commit

Permalink
Added ability to pass root level Serilog logger to Topshelf so both T…
Browse files Browse the repository at this point in the history
…opshelf code and app code can share the same logger. Topshelf#234
  • Loading branch information
pawelpabich committed Jun 3, 2015
1 parent 201c430 commit 7d5bc51
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 26 deletions.
32 changes: 8 additions & 24 deletions src/Topshelf.Serilog/Logging/SerilogLogWriterFactory.cs
Expand Up @@ -19,14 +19,9 @@ public class SerilogLogWriterFactory : LogWriterFactory
{
readonly Func<string, ILogger> _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)
Expand All @@ -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);
}
}
}
Expand Down
12 changes: 10 additions & 2 deletions src/Topshelf.Serilog/SerilogConfigurationExtensions.cs
Expand Up @@ -23,15 +23,23 @@ public static class SerilogConfigurationExtensions
/// </summary>
public static void UseSerilog(this HostConfigurator configurator)
{
SerilogLogWriterFactory.Use();
SerilogLogWriterFactory.Use(Log.Logger);
}

/// <summary>
/// Configures Topshelf to use Serilog for logging, using the given <see cref="LoggerConfiguration"/> to create loggers.
/// </summary>
public static void UseSerilog(this HostConfigurator configurator, LoggerConfiguration loggerConfiguration)
{
SerilogLogWriterFactory.Use(loggerConfiguration);
SerilogLogWriterFactory.Use(loggerConfiguration.CreateLogger());
}

/// <summary>
/// Configures Topshelf to use Serilog for logging, using the given root logger <see cref="ILogger"/> to create loggers.
/// </summary>
public static void UseSerilog(this HostConfigurator configurator, ILogger rootLogger)
{
SerilogLogWriterFactory.Use(rootLogger);
}
}
}

0 comments on commit 7d5bc51

Please sign in to comment.