Skip to content

Commit b8f2e70

Browse files
authored
Merge pull request #65 from serilog/dev
5.0.1 Release
2 parents e6b6741 + 30be557 commit b8f2e70

File tree

3 files changed

+113
-1
lines changed

3 files changed

+113
-1
lines changed

src/Serilog.Extensions.Hosting/Serilog.Extensions.Hosting.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<Description>Serilog support for .NET Core logging in hosted services</Description>
5-
<VersionPrefix>5.0.0</VersionPrefix>
5+
<VersionPrefix>5.0.1</VersionPrefix>
66
<Authors>Microsoft;Serilog Contributors</Authors>
77
<TargetFrameworks>netstandard2.0;netstandard2.1</TargetFrameworks>
88
<LangVersion>8</LangVersion>

src/Serilog.Extensions.Hosting/SerilogHostBuilderExtensions.cs

+3
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ public static IHostBuilder UseSerilog(
8484
{
8585
// This won't (and shouldn't) take ownership of the logger.
8686
collection.AddSingleton(logger);
87+
88+
// Still need to use RegisteredLogger as it is used by ConfigureDiagnosticContext.
89+
collection.AddSingleton(new RegisteredLogger(logger));
8790
}
8891
bool useRegisteredLogger = logger != null;
8992
ConfigureDiagnosticContext(collection, useRegisteredLogger);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using Microsoft.Extensions.Configuration;
4+
using Microsoft.Extensions.DependencyInjection;
5+
using Microsoft.Extensions.Hosting;
6+
using Microsoft.Extensions.Logging;
7+
using Xunit;
8+
9+
namespace Serilog.Extensions.Hosting.Tests
10+
{
11+
public class SerilogHostBuilderExtensionsTests
12+
{
13+
[Fact]
14+
public void ServicesAreRegisteredWhenCallingUseSerilog()
15+
{
16+
// Arrange
17+
var collection = new ServiceCollection();
18+
IHostBuilder builder = new FakeHostBuilder(collection);
19+
20+
// Act
21+
builder.UseSerilog();
22+
23+
// Assert
24+
IServiceProvider provider = collection.BuildServiceProvider();
25+
provider.GetRequiredService<ILoggerFactory>();
26+
provider.GetRequiredService<IDiagnosticContext>();
27+
}
28+
29+
[Fact]
30+
public void ServicesAreRegisteredWhenCallingUseSerilogWithLogger()
31+
{
32+
// Arrange
33+
var collection = new ServiceCollection();
34+
IHostBuilder builder = new FakeHostBuilder(collection);
35+
ILogger logger = new LoggerConfiguration().CreateLogger();
36+
37+
// Act
38+
builder.UseSerilog(logger);
39+
40+
// Assert
41+
IServiceProvider provider = collection.BuildServiceProvider();
42+
provider.GetRequiredService<ILogger>();
43+
provider.GetRequiredService<ILoggerFactory>();
44+
provider.GetRequiredService<IDiagnosticContext>();
45+
}
46+
47+
[Fact]
48+
public void ServicesAreRegisteredWhenCallingUseSerilogWithConfigureDelegate()
49+
{
50+
// Arrange
51+
var collection = new ServiceCollection();
52+
IHostBuilder builder = new FakeHostBuilder(collection);
53+
54+
// Act
55+
builder.UseSerilog((_, _) => { });
56+
57+
// Assert
58+
IServiceProvider provider = collection.BuildServiceProvider();
59+
provider.GetRequiredService<ILogger>();
60+
provider.GetRequiredService<ILoggerFactory>();
61+
provider.GetRequiredService<IDiagnosticContext>();
62+
}
63+
64+
private class FakeHostBuilder : IHostBuilder
65+
{
66+
private readonly IServiceCollection _collection;
67+
68+
public FakeHostBuilder(IServiceCollection collection) => _collection = collection;
69+
70+
public IHostBuilder ConfigureHostConfiguration(Action<IConfigurationBuilder> configureDelegate)
71+
{
72+
throw new NotImplementedException();
73+
}
74+
75+
public IHostBuilder ConfigureAppConfiguration(Action<HostBuilderContext, IConfigurationBuilder> configureDelegate)
76+
{
77+
throw new NotImplementedException();
78+
}
79+
80+
public IHostBuilder ConfigureServices(Action<HostBuilderContext, IServiceCollection> configureDelegate)
81+
{
82+
configureDelegate(null, _collection);
83+
return this;
84+
}
85+
86+
public IHostBuilder UseServiceProviderFactory<TContainerBuilder>(IServiceProviderFactory<TContainerBuilder> factory)
87+
{
88+
throw new NotImplementedException();
89+
}
90+
91+
public IHostBuilder UseServiceProviderFactory<TContainerBuilder>(Func<HostBuilderContext, IServiceProviderFactory<TContainerBuilder>> factory)
92+
{
93+
throw new NotImplementedException();
94+
}
95+
96+
public IHostBuilder ConfigureContainer<TContainerBuilder>(Action<HostBuilderContext, TContainerBuilder> configureDelegate)
97+
{
98+
throw new NotImplementedException();
99+
}
100+
101+
public IHost Build()
102+
{
103+
throw new NotImplementedException();
104+
}
105+
106+
public IDictionary<object, object> Properties { get; }
107+
}
108+
}
109+
}

0 commit comments

Comments
 (0)