React to logging in DI changes (#1873)

This commit is contained in:
Pavel Krymets 2017-06-02 08:34:22 -07:00 committed by GitHub
parent 69b4100bbc
commit 3c731ceb13
9 changed files with 53 additions and 56 deletions

View File

@ -1,6 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15 # Visual Studio 15
VisualStudioVersion = 15.0.26403.7 VisualStudioVersion = 15.0.26510.0
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{7972A5D6-3385-4127-9277-428506DD44FF}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{7972A5D6-3385-4127-9277-428506DD44FF}"
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
@ -22,7 +22,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shared", "shared", "{0EF2AC
test\shared\DummyApplication.cs = test\shared\DummyApplication.cs test\shared\DummyApplication.cs = test\shared\DummyApplication.cs
test\shared\HttpClientSlim.cs = test\shared\HttpClientSlim.cs test\shared\HttpClientSlim.cs = test\shared\HttpClientSlim.cs
test\shared\HttpParsingData.cs = test\shared\HttpParsingData.cs test\shared\HttpParsingData.cs = test\shared\HttpParsingData.cs
test\shared\KestrelTestLoggerFactory.cs = test\shared\KestrelTestLoggerFactory.cs test\shared\KestrelTestLoggerProvider.cs = test\shared\KestrelTestLoggerProvider.cs
test\shared\LifetimeNotImplemented.cs = test\shared\LifetimeNotImplemented.cs test\shared\LifetimeNotImplemented.cs = test\shared\LifetimeNotImplemented.cs
test\shared\MockConnectionInformation.cs = test\shared\MockConnectionInformation.cs test\shared\MockConnectionInformation.cs = test\shared\MockConnectionInformation.cs
test\shared\MockFrameControl.cs = test\shared\MockFrameControl.cs test\shared\MockFrameControl.cs = test\shared\MockFrameControl.cs

View File

@ -156,7 +156,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
private static KestrelServer CreateServer(KestrelServerOptions options, ILogger testLogger) private static KestrelServer CreateServer(KestrelServerOptions options, ILogger testLogger)
{ {
return new KestrelServer(Options.Create(options), new MockTransportFactory(), new KestrelTestLoggerFactory(testLogger)); return new KestrelServer(Options.Create(options), new MockTransportFactory(), new LoggerFactory(new [] { new KestrelTestLoggerProvider(testLogger)} ));
} }
private static void StartDummyApplication(IServer server) private static void StartDummyApplication(IServer server)

View File

@ -26,6 +26,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.Logging" Version="$(AspNetCoreVersion)" />
<PackageReference Include="Microsoft.AspNetCore.Testing" Version="$(AspNetCoreVersion)" /> <PackageReference Include="Microsoft.AspNetCore.Testing" Version="$(AspNetCoreVersion)" />
<PackageReference Include="Microsoft.AspNetCore.Http" Version="$(AspNetCoreVersion)" /> <PackageReference Include="Microsoft.AspNetCore.Http" Version="$(AspNetCoreVersion)" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(TestSdkVersion)" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(TestSdkVersion)" />

View File

@ -19,6 +19,7 @@ using Microsoft.AspNetCore.Server.Kestrel.Core;
using Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure; using Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure;
using Microsoft.AspNetCore.Testing; using Microsoft.AspNetCore.Testing;
using Microsoft.AspNetCore.Testing.xunit; using Microsoft.AspNetCore.Testing.xunit;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Xunit; using Xunit;
@ -31,9 +32,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
{ {
private const int MaxRetries = 10; private const int MaxRetries = 10;
private readonly ILoggerFactory _loggerFactory; private readonly Action<ILoggingBuilder> _configureLoggingDelegate;
public AddressRegistrationTests(ITestOutputHelper output) => _loggerFactory = new LoggerFactory().AddXunit(output); public AddressRegistrationTests(ITestOutputHelper output) => _configureLoggingDelegate = builder => builder.AddXunit(output);
[ConditionalFact] [ConditionalFact]
[NetworkIsReachable] [NetworkIsReachable]
@ -161,7 +162,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
{ {
var hostBuilder = new WebHostBuilder() var hostBuilder = new WebHostBuilder()
.UseKestrel() .UseKestrel()
.UseLoggerFactory(_loggerFactory) .ConfigureLogging(_configureLoggingDelegate)
.UseUrls(addressInput) .UseUrls(addressInput)
.Configure(ConfigureEchoAddress); .Configure(ConfigureEchoAddress);
@ -220,7 +221,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
private async Task RegisterIPEndPoint_Success(IPEndPoint endPoint, string testUrl, int testPort = 0) private async Task RegisterIPEndPoint_Success(IPEndPoint endPoint, string testUrl, int testPort = 0)
{ {
var hostBuilder = new WebHostBuilder() var hostBuilder = new WebHostBuilder()
.UseLoggerFactory(_loggerFactory) .ConfigureLogging(_configureLoggingDelegate)
.UseKestrel(options => .UseKestrel(options =>
{ {
options.Listen(endPoint, listenOptions => options.Listen(endPoint, listenOptions =>
@ -301,9 +302,11 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
var testLogger = new TestApplicationErrorLogger(); var testLogger = new TestApplicationErrorLogger();
var hostBuilder = new WebHostBuilder() var hostBuilder = new WebHostBuilder()
.UseLoggerFactory(_loggerFactory) .ConfigureLogging(_configureLoggingDelegate)
.UseKestrel() .UseKestrel()
.UseLoggerFactory(_ => new KestrelTestLoggerFactory(testLogger)) .ConfigureLogging(builder => builder
.AddProvider(new KestrelTestLoggerProvider(testLogger))
.SetMinimumLevel(LogLevel.Debug))
.Configure(ConfigureEchoAddress); .Configure(ConfigureEchoAddress);
using (var host = hostBuilder.Build()) using (var host = hostBuilder.Build())
@ -331,7 +334,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
var port = ((IPEndPoint)socket.LocalEndPoint).Port; var port = ((IPEndPoint)socket.LocalEndPoint).Port;
var hostBuilder = new WebHostBuilder() var hostBuilder = new WebHostBuilder()
.UseLoggerFactory(_loggerFactory) .ConfigureLogging(_configureLoggingDelegate)
.UseKestrel() .UseKestrel()
.UseUrls($"http://127.0.0.1:{port}") .UseUrls($"http://127.0.0.1:{port}")
.Configure(ConfigureEchoAddress); .Configure(ConfigureEchoAddress);
@ -354,7 +357,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
var port = ((IPEndPoint)socket.LocalEndPoint).Port; var port = ((IPEndPoint)socket.LocalEndPoint).Port;
var hostBuilder = new WebHostBuilder() var hostBuilder = new WebHostBuilder()
.UseLoggerFactory(_loggerFactory) .ConfigureLogging(_configureLoggingDelegate)
.UseKestrel() .UseKestrel()
.UseUrls($"http://[::1]:{port}") .UseUrls($"http://[::1]:{port}")
.Configure(ConfigureEchoAddress); .Configure(ConfigureEchoAddress);
@ -382,7 +385,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
}) })
.UseUrls(useUrlsAddress) .UseUrls(useUrlsAddress)
.PreferHostingUrls(true) .PreferHostingUrls(true)
.UseLoggerFactory(_ => new KestrelTestLoggerFactory(testLogger)) .ConfigureLogging(builder => builder.AddProvider(new KestrelTestLoggerProvider(testLogger)))
.Configure(ConfigureEchoAddress); .Configure(ConfigureEchoAddress);
using (var host = hostBuilder.Build()) using (var host = hostBuilder.Build())
@ -412,7 +415,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
var useUrlsAddress = $"http://127.0.0.1:0"; var useUrlsAddress = $"http://127.0.0.1:0";
var testLogger = new TestApplicationErrorLogger(); var testLogger = new TestApplicationErrorLogger();
var hostBuilder = new WebHostBuilder() var hostBuilder = new WebHostBuilder()
.UseLoggerFactory(_loggerFactory) .ConfigureLogging(_configureLoggingDelegate)
.UseKestrel(options => .UseKestrel(options =>
{ {
options.Listen(new IPEndPoint(IPAddress.Loopback, 0), listenOptions => options.Listen(new IPEndPoint(IPAddress.Loopback, 0), listenOptions =>
@ -422,7 +425,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
}) })
.UseUrls($"http://127.0.0.1:0") .UseUrls($"http://127.0.0.1:0")
.PreferHostingUrls(false) .PreferHostingUrls(false)
.UseLoggerFactory(_ => new KestrelTestLoggerFactory(testLogger)) .ConfigureLogging(builder => builder.AddProvider(new KestrelTestLoggerProvider(testLogger)))
.Configure(ConfigureEchoAddress); .Configure(ConfigureEchoAddress);
using (var host = hostBuilder.Build()) using (var host = hostBuilder.Build())
@ -450,7 +453,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
public async Task DoesNotOverrideDirectConfigurationWithIServerAddressesFeature_IfAddressesEmpty() public async Task DoesNotOverrideDirectConfigurationWithIServerAddressesFeature_IfAddressesEmpty()
{ {
var hostBuilder = new WebHostBuilder() var hostBuilder = new WebHostBuilder()
.UseLoggerFactory(_loggerFactory) .ConfigureLogging(_configureLoggingDelegate)
.UseKestrel(options => .UseKestrel(options =>
{ {
options.Listen(new IPEndPoint(IPAddress.Loopback, 0), listenOptions => options.Listen(new IPEndPoint(IPAddress.Loopback, 0), listenOptions =>
@ -528,7 +531,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
var port = ((IPEndPoint)socket.LocalEndPoint).Port; var port = ((IPEndPoint)socket.LocalEndPoint).Port;
var hostBuilder = new WebHostBuilder() var hostBuilder = new WebHostBuilder()
.UseLoggerFactory(_loggerFactory) .ConfigureLogging(_configureLoggingDelegate)
.UseKestrel() .UseKestrel()
.UseUrls($"http://localhost:{port}") .UseUrls($"http://localhost:{port}")
.Configure(ConfigureEchoAddress); .Configure(ConfigureEchoAddress);

View File

@ -8,6 +8,7 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure; using Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure;
using Microsoft.AspNetCore.Testing; using Microsoft.AspNetCore.Testing;
using Microsoft.AspNetCore.Testing.xunit; using Microsoft.AspNetCore.Testing.xunit;
using Microsoft.Extensions.Logging;
using Moq; using Moq;
using Xunit; using Xunit;
@ -42,7 +43,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
var tcs = new TaskCompletionSource<object>(); var tcs = new TaskCompletionSource<object>();
return tcs.Task; return tcs.Task;
}, },
new TestServiceContext(new KestrelTestLoggerFactory(), mockTrace.Object))) new TestServiceContext(new LoggerFactory(), mockTrace.Object)))
{ {
using (var connection = server.CreateConnection()) using (var connection = server.CreateConnection())
{ {

View File

@ -11,6 +11,7 @@ using System.Security.Cryptography.X509Certificates;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Server.Kestrel.Https; using Microsoft.AspNetCore.Server.Kestrel.Https;
@ -26,7 +27,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
[Fact] [Fact]
public async Task EmptyRequestLoggedAsInformation() public async Task EmptyRequestLoggedAsInformation()
{ {
var loggerFactory = new HandshakeErrorLoggerFactory(); var loggerProvider = new HandshakeErrorLoggerProvider();
var hostBuilder = new WebHostBuilder() var hostBuilder = new WebHostBuilder()
.UseKestrel(options => .UseKestrel(options =>
@ -36,7 +37,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
listenOptions.UseHttps(TestResources.TestCertificatePath, "testPassword"); listenOptions.UseHttps(TestResources.TestCertificatePath, "testPassword");
}); });
}) })
.UseLoggerFactory(loggerFactory) .ConfigureLogging(builder => builder.AddProvider(loggerProvider))
.Configure(app => { }); .Configure(app => { });
using (var host = hostBuilder.Build()) using (var host = hostBuilder.Build())
@ -48,19 +49,19 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
// Close socket immediately // Close socket immediately
} }
await loggerFactory.FilterLogger.LogTcs.Task.TimeoutAfter(TimeSpan.FromSeconds(10)); await loggerProvider.FilterLogger.LogTcs.Task.TimeoutAfter(TimeSpan.FromSeconds(10));
} }
Assert.Equal(1, loggerFactory.FilterLogger.LastEventId.Id); Assert.Equal(1, loggerProvider.FilterLogger.LastEventId.Id);
Assert.Equal(LogLevel.Information, loggerFactory.FilterLogger.LastLogLevel); Assert.Equal(LogLevel.Information, loggerProvider.FilterLogger.LastLogLevel);
Assert.True(loggerFactory.ErrorLogger.TotalErrorsLogged == 0, Assert.True(loggerProvider.ErrorLogger.TotalErrorsLogged == 0,
userMessage: string.Join(Environment.NewLine, loggerFactory.ErrorLogger.ErrorMessages)); userMessage: string.Join(Environment.NewLine, loggerProvider.ErrorLogger.ErrorMessages));
} }
[Fact] [Fact]
public async Task ClientHandshakeFailureLoggedAsInformation() public async Task ClientHandshakeFailureLoggedAsInformation()
{ {
var loggerFactory = new HandshakeErrorLoggerFactory(); var loggerProvider = new HandshakeErrorLoggerProvider();
var hostBuilder = new WebHostBuilder() var hostBuilder = new WebHostBuilder()
.UseKestrel(options => .UseKestrel(options =>
@ -70,7 +71,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
listenOptions.UseHttps(TestResources.TestCertificatePath, "testPassword"); listenOptions.UseHttps(TestResources.TestCertificatePath, "testPassword");
}); });
}) })
.UseLoggerFactory(loggerFactory) .ConfigureLogging(builder => builder.AddProvider(loggerProvider))
.Configure(app => { }); .Configure(app => { });
using (var host = hostBuilder.Build()) using (var host = hostBuilder.Build())
@ -84,20 +85,20 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
await stream.WriteAsync(new byte[10], 0, 10); await stream.WriteAsync(new byte[10], 0, 10);
} }
await loggerFactory.FilterLogger.LogTcs.Task.TimeoutAfter(TimeSpan.FromSeconds(10)); await loggerProvider.FilterLogger.LogTcs.Task.TimeoutAfter(TimeSpan.FromSeconds(10));
} }
Assert.Equal(1, loggerFactory.FilterLogger.LastEventId.Id); Assert.Equal(1, loggerProvider.FilterLogger.LastEventId.Id);
Assert.Equal(LogLevel.Information, loggerFactory.FilterLogger.LastLogLevel); Assert.Equal(LogLevel.Information, loggerProvider.FilterLogger.LastLogLevel);
Assert.True(loggerFactory.ErrorLogger.TotalErrorsLogged == 0, Assert.True(loggerProvider.ErrorLogger.TotalErrorsLogged == 0,
userMessage: string.Join(Environment.NewLine, loggerFactory.ErrorLogger.ErrorMessages)); userMessage: string.Join(Environment.NewLine, loggerProvider.ErrorLogger.ErrorMessages));
} }
// Regression test for https://github.com/aspnet/KestrelHttpServer/issues/1103#issuecomment-246971172 // Regression test for https://github.com/aspnet/KestrelHttpServer/issues/1103#issuecomment-246971172
[Fact] [Fact]
public async Task DoesNotThrowObjectDisposedExceptionOnConnectionAbort() public async Task DoesNotThrowObjectDisposedExceptionOnConnectionAbort()
{ {
var loggerFactory = new HandshakeErrorLoggerFactory(); var loggerProvider = new HandshakeErrorLoggerProvider();
var hostBuilder = new WebHostBuilder() var hostBuilder = new WebHostBuilder()
.UseKestrel(options => .UseKestrel(options =>
{ {
@ -106,7 +107,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
listenOptions.UseHttps(TestResources.TestCertificatePath, "testPassword"); listenOptions.UseHttps(TestResources.TestCertificatePath, "testPassword");
}); });
}) })
.UseLoggerFactory(loggerFactory) .ConfigureLogging(builder => builder.AddProvider(loggerProvider))
.Configure(app => app.Run(async httpContext => .Configure(app => app.Run(async httpContext =>
{ {
var ct = httpContext.RequestAborted; var ct = httpContext.RequestAborted;
@ -142,14 +143,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
} }
} }
Assert.False(loggerFactory.ErrorLogger.ObjectDisposedExceptionLogged); Assert.False(loggerProvider.ErrorLogger.ObjectDisposedExceptionLogged);
} }
[Fact] [Fact]
public async Task DoesNotThrowObjectDisposedExceptionFromWriteAsyncAfterConnectionIsAborted() public async Task DoesNotThrowObjectDisposedExceptionFromWriteAsyncAfterConnectionIsAborted()
{ {
var tcs = new TaskCompletionSource<object>(); var tcs = new TaskCompletionSource<object>();
var loggerFactory = new HandshakeErrorLoggerFactory(); var loggerProvider = new HandshakeErrorLoggerProvider();
var hostBuilder = new WebHostBuilder() var hostBuilder = new WebHostBuilder()
.UseKestrel(options => .UseKestrel(options =>
{ {
@ -158,7 +159,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
listenOptions.UseHttps(TestResources.TestCertificatePath, "testPassword"); listenOptions.UseHttps(TestResources.TestCertificatePath, "testPassword");
}); });
}) })
.UseLoggerFactory(loggerFactory) .ConfigureLogging(builder => builder.AddProvider(loggerProvider))
.Configure(app => app.Run(async httpContext => .Configure(app => app.Run(async httpContext =>
{ {
httpContext.Abort(); httpContext.Abort();
@ -198,7 +199,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
[Fact] [Fact]
public async Task DoesNotThrowObjectDisposedExceptionOnEmptyConnection() public async Task DoesNotThrowObjectDisposedExceptionOnEmptyConnection()
{ {
var loggerFactory = new HandshakeErrorLoggerFactory(); var loggerProvider = new HandshakeErrorLoggerProvider();
var hostBuilder = new WebHostBuilder() var hostBuilder = new WebHostBuilder()
.UseKestrel(options => .UseKestrel(options =>
{ {
@ -207,7 +208,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
listenOptions.UseHttps(TestResources.TestCertificatePath, "testPassword"); listenOptions.UseHttps(TestResources.TestCertificatePath, "testPassword");
}); });
}) })
.UseLoggerFactory(loggerFactory) .ConfigureLogging(builder => builder.AddProvider(loggerProvider))
.Configure(app => app.Run(httpContext => Task.CompletedTask)); .Configure(app => app.Run(httpContext => Task.CompletedTask));
using (var host = hostBuilder.Build()) using (var host = hostBuilder.Build())
@ -224,14 +225,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
} }
} }
Assert.False(loggerFactory.ErrorLogger.ObjectDisposedExceptionLogged); Assert.False(loggerProvider.ErrorLogger.ObjectDisposedExceptionLogged);
} }
// Regression test for https://github.com/aspnet/KestrelHttpServer/pull/1197 // Regression test for https://github.com/aspnet/KestrelHttpServer/pull/1197
[Fact] [Fact]
public void ConnectionFilterDoesNotLeakBlock() public void ConnectionFilterDoesNotLeakBlock()
{ {
var loggerFactory = new HandshakeErrorLoggerFactory(); var loggerProvider = new HandshakeErrorLoggerProvider();
var hostBuilder = new WebHostBuilder() var hostBuilder = new WebHostBuilder()
.UseKestrel(options => .UseKestrel(options =>
@ -241,7 +242,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
listenOptions.UseHttps(TestResources.TestCertificatePath, "testPassword"); listenOptions.UseHttps(TestResources.TestCertificatePath, "testPassword");
}); });
}) })
.UseLoggerFactory(loggerFactory) .ConfigureLogging(builder => builder.AddProvider(loggerProvider))
.Configure(app => { }); .Configure(app => { });
using (var host = hostBuilder.Build()) using (var host = hostBuilder.Build())
@ -258,7 +259,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
} }
} }
private class HandshakeErrorLoggerFactory : ILoggerFactory private class HandshakeErrorLoggerProvider : ILoggerProvider
{ {
public HttpsConnectionFilterLogger FilterLogger { get; } = new HttpsConnectionFilterLogger(); public HttpsConnectionFilterLogger FilterLogger { get; } = new HttpsConnectionFilterLogger();
public ApplicationErrorLogger ErrorLogger { get; } = new ApplicationErrorLogger(); public ApplicationErrorLogger ErrorLogger { get; } = new ApplicationErrorLogger();
@ -275,11 +276,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
} }
} }
public void AddProvider(ILoggerProvider provider)
{
throw new NotImplementedException();
}
public void Dispose() public void Dispose()
{ {
} }

View File

@ -27,6 +27,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.Logging" Version="$(AspNetCoreVersion)" />
<PackageReference Include="Microsoft.AspNetCore.Http" Version="$(AspNetCoreVersion)" /> <PackageReference Include="Microsoft.AspNetCore.Http" Version="$(AspNetCoreVersion)" />
<PackageReference Include="Microsoft.AspNetCore.Testing" Version="$(AspNetCoreVersion)" /> <PackageReference Include="Microsoft.AspNetCore.Testing" Version="$(AspNetCoreVersion)" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(TestSdkVersion)" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(TestSdkVersion)" />

View File

@ -6,16 +6,16 @@ using Microsoft.Extensions.Logging;
namespace Microsoft.AspNetCore.Testing namespace Microsoft.AspNetCore.Testing
{ {
public class KestrelTestLoggerFactory : ILoggerFactory public class KestrelTestLoggerProvider : ILoggerProvider
{ {
private readonly ILogger _testLogger; private readonly ILogger _testLogger;
public KestrelTestLoggerFactory() public KestrelTestLoggerProvider()
: this(new TestApplicationErrorLogger()) : this(new TestApplicationErrorLogger())
{ {
} }
public KestrelTestLoggerFactory(ILogger testLogger) public KestrelTestLoggerProvider(ILogger testLogger)
{ {
_testLogger = testLogger; _testLogger = testLogger;
} }
@ -25,11 +25,6 @@ namespace Microsoft.AspNetCore.Testing
return _testLogger; return _testLogger;
} }
public void AddProvider(ILoggerProvider provider)
{
throw new NotImplementedException();
}
public void Dispose() public void Dispose()
{ {
throw new NotImplementedException(); throw new NotImplementedException();

View File

@ -12,7 +12,7 @@ namespace Microsoft.AspNetCore.Testing
public class TestServiceContext : ServiceContext public class TestServiceContext : ServiceContext
{ {
public TestServiceContext() public TestServiceContext()
: this(new KestrelTestLoggerFactory()) : this(new LoggerFactory(new[] { new KestrelTestLoggerProvider() }))
{ {
} }