From 8102d6a038863ad2fc34d8c14bfb9aa535d26446 Mon Sep 17 00:00:00 2001 From: BrennanConroy Date: Tue, 25 Apr 2017 15:07:10 -0700 Subject: [PATCH] Add configuration to logging in WebHost --- src/Microsoft.AspNetCore/WebHost.cs | 3 +- .../WebHostFunctionalTests.cs | 41 +++++++++++++++++++ .../CreateDefaultBuilderApp/Program.cs | 28 +------------ 3 files changed, 45 insertions(+), 27 deletions(-) diff --git a/src/Microsoft.AspNetCore/WebHost.cs b/src/Microsoft.AspNetCore/WebHost.cs index aea490fb7f..51b5a6e160 100644 --- a/src/Microsoft.AspNetCore/WebHost.cs +++ b/src/Microsoft.AspNetCore/WebHost.cs @@ -175,8 +175,9 @@ namespace Microsoft.AspNetCore config.AddCommandLine(args); } }) - .ConfigureLogging(logging => + .ConfigureLogging((hostingContext, logging) => { + logging.UseConfiguration(hostingContext.Configuration.GetSection("Logging")); logging.AddConsole(); logging.AddDebug(); }) diff --git a/test/Microsoft.AspNetCore.FunctionalTests/WebHostFunctionalTests.cs b/test/Microsoft.AspNetCore.FunctionalTests/WebHostFunctionalTests.cs index 99485cab7d..43be04f16e 100644 --- a/test/Microsoft.AspNetCore.FunctionalTests/WebHostFunctionalTests.cs +++ b/test/Microsoft.AspNetCore.FunctionalTests/WebHostFunctionalTests.cs @@ -200,6 +200,47 @@ namespace Microsoft.AspNetCore.Tests } } + [Fact] + public void LoggingConfigurationSectionPassedToLoggerByDefault() + { + try + { + File.WriteAllText("appsettings.json", @" +{ + ""Logging"": { + ""LogLevel"": { + ""Default"": ""Warning"" + } + } +} +"); + using (var webHost = WebHost.Start(context => context.Response.WriteAsync("Hello, World!"))) + { + var factory = (ILoggerFactory)webHost.Services.GetService(typeof(ILoggerFactory)); + var logger = factory.CreateLogger("Test"); + + logger.Log(LogLevel.Information, 0, "Message", null, (s, e) => + { + Assert.True(false); + return string.Empty; + }); + + var logWritten = false; + logger.Log(LogLevel.Warning, 0, "Message", null, (s, e) => + { + logWritten = true; + return string.Empty; + }); + + Assert.True(logWritten); + } + } + finally + { + File.Delete("appsettings.json"); + } + } + private async Task ExecuteStartOrStartWithTest(Func> getResponse, string applicationName) { await ExecuteTestApp(applicationName, async (deploymentResult, logger) => diff --git a/test/TestSites/CreateDefaultBuilderApp/Program.cs b/test/TestSites/CreateDefaultBuilderApp/Program.cs index f14aec8f93..eb7eeaaa03 100644 --- a/test/TestSites/CreateDefaultBuilderApp/Program.cs +++ b/test/TestSites/CreateDefaultBuilderApp/Program.cs @@ -24,7 +24,6 @@ namespace CreateDefaultBuilderApp string responseMessage = string.Empty; WebHost.CreateDefaultBuilder(new[] { "--cliKey", "cliValue" }) - .UseLoggerFactory(new TestLoggerFactory()) .ConfigureServices((context, services) => { responseMessage = GetResponseMessage(context, services); @@ -77,34 +76,11 @@ namespace CreateDefaultBuilderApp return $"Command line arguments not loaded into Configuration."; } - var testLoggerFactory = (TestLoggerFactory)context.LoggerFactory; - - // Verify AddConsole called - if (!testLoggerFactory.Providers.Any(provider => provider is ConsoleLoggerProvider)) - { - return $"Console logger not added to ILoggerFactory."; - } - - // Verify AddDebug called - if (!testLoggerFactory.Providers.Any(provider => provider is DebugLoggerProvider)) - { - return $"Debug logger not added to ILoggerFactory."; - } - + // TODO: Verify AddConsole called + // TODO: Verify AddDebug called // TODO: Verify UseIISIntegration called return context.HostingEnvironment.ApplicationName; } - - private class TestLoggerFactory : ILoggerFactory - { - public IList Providers { get; } = new List(); - - public void AddProvider(ILoggerProvider provider) => Providers.Add(provider); - - public ILogger CreateLogger(string categoryName) => NullLogger.Instance; - - public void Dispose() { } - } } } \ No newline at end of file