diff --git a/build/dependencies.props b/build/dependencies.props index 618ad93c56..8d12964ca3 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -25,6 +25,7 @@ 2.2.0-preview3-35425 2.2.0-preview3-35425 2.2.0-preview3-35425 + 2.2.0-preview3-35425 2.2.0-preview3-35425 2.0.9 2.1.3 diff --git a/src/Microsoft.AspNetCore/Microsoft.AspNetCore.csproj b/src/Microsoft.AspNetCore/Microsoft.AspNetCore.csproj index 1e77df2cae..ea9a676d87 100644 --- a/src/Microsoft.AspNetCore/Microsoft.AspNetCore.csproj +++ b/src/Microsoft.AspNetCore/Microsoft.AspNetCore.csproj @@ -26,6 +26,7 @@ + diff --git a/src/Microsoft.AspNetCore/WebHost.cs b/src/Microsoft.AspNetCore/WebHost.cs index 985386af34..10726c8356 100644 --- a/src/Microsoft.AspNetCore/WebHost.cs +++ b/src/Microsoft.AspNetCore/WebHost.cs @@ -190,6 +190,7 @@ namespace Microsoft.AspNetCore logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging")); logging.AddConsole(); logging.AddDebug(); + logging.AddEventSourceLogger(); }) .ConfigureServices((hostingContext, services) => { diff --git a/test/Microsoft.AspNetCore.Tests/WebHostTests.cs b/test/Microsoft.AspNetCore.Tests/WebHostTests.cs index e076f0f19c..4b040e0c03 100644 --- a/test/Microsoft.AspNetCore.Tests/WebHostTests.cs +++ b/test/Microsoft.AspNetCore.Tests/WebHostTests.cs @@ -2,11 +2,16 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Diagnostics.Tracing; +using System.Linq; using System.Threading; using Microsoft.AspNetCore.HostFiltering; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Xunit; @@ -49,6 +54,54 @@ namespace Microsoft.AspNetCore.Tests Assert.Contains("NewHost", options.AllowedHosts); } + [Fact] + public void CreateDefaultBuilder_RegistersEventSourceLogger() + { + var listener = new TestEventListener(); + var host = WebHost.CreateDefaultBuilder() + .Configure(_ => { }) + .Build(); + + var logger = host.Services.GetRequiredService>(); + logger.LogInformation("Request starting"); + + var events = listener.EventData.ToArray(); + Assert.Contains(events, args => + args.EventSource.Name == "Microsoft-Extensions-Logging" && + args.Payload.OfType().Any(p => p.Contains("Request starting"))); + } + + private class TestEventListener : EventListener + { + private volatile bool _disposed; + + private ConcurrentQueue _events = new ConcurrentQueue(); + + public IEnumerable EventData => _events; + + protected override void OnEventSourceCreated(EventSource eventSource) + { + if (eventSource.Name == "Microsoft-Extensions-Logging") + { + EnableEvents(eventSource, EventLevel.Informational); + } + } + + protected override void OnEventWritten(EventWrittenEventArgs eventData) + { + if (!_disposed) + { + _events.Enqueue(eventData); + } + } + + public override void Dispose() + { + _disposed = true; + base.Dispose(); + } + } + private class ReloadableMemorySource : IConfigurationSource { public IConfigurationProvider Build(IConfigurationBuilder builder)