| File: HttpLoggingBuilderExtensions.cs | Web Access |
| Project: src\aspnetcore\src\Middleware\HttpLogging\src\Microsoft.AspNetCore.HttpLogging.csproj (Microsoft.AspNetCore.HttpLogging) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.AspNetCore.HttpLogging; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.ObjectPool; using Resources = Microsoft.AspNetCore.HttpLogging.Resources; namespace Microsoft.AspNetCore.Builder; /// <summary> /// Extension methods for the HttpLogging middleware. /// </summary> public static class HttpLoggingBuilderExtensions { /// <summary> /// Adds a middleware that can log HTTP requests and responses. /// </summary> /// <param name="app">The <see cref="IApplicationBuilder"/> instance this method extends.</param> /// <returns>The <see cref="IApplicationBuilder"/>.</returns> public static IApplicationBuilder UseHttpLogging(this IApplicationBuilder app) { ArgumentNullException.ThrowIfNull(app); VerifyHttpLoggingServicesAreRegistered(app); app.UseMiddleware<HttpLoggingMiddleware>(); return app; } /// <summary> /// Adds a middleware that can log HTTP requests and responses for server logs in W3C format. /// </summary> /// <param name="app">The <see cref="IApplicationBuilder"/> instance this method extends.</param> /// <returns>The <see cref="IApplicationBuilder"/>.</returns> public static IApplicationBuilder UseW3CLogging(this IApplicationBuilder app) { ArgumentNullException.ThrowIfNull(app); VerifyW3CLoggingServicesAreRegistered(app); app.UseMiddleware<W3CLoggingMiddleware>(); return app; } private static void VerifyHttpLoggingServicesAreRegistered(IApplicationBuilder app) { var serviceProviderIsService = app.ApplicationServices.GetService<IServiceProviderIsService>(); if (serviceProviderIsService != null && (!serviceProviderIsService.IsService(typeof(ObjectPool<HttpLoggingInterceptorContext>)) || !serviceProviderIsService.IsService(typeof(TimeProvider)))) { throw new InvalidOperationException(Resources.FormatUnableToFindServices( nameof(IServiceCollection), nameof(HttpLoggingServicesExtensions.AddHttpLogging))); } } private static void VerifyW3CLoggingServicesAreRegistered(IApplicationBuilder app) { var serviceProviderIsService = app.ApplicationServices.GetService<IServiceProviderIsService>(); if (serviceProviderIsService != null && (!serviceProviderIsService.IsService(typeof(W3CLoggerProcessor)) || !serviceProviderIsService.IsService(typeof(W3CLogger)))) { throw new InvalidOperationException(Resources.FormatUnableToFindServices( nameof(IServiceCollection), nameof(HttpLoggingServicesExtensions.AddW3CLogging))); } } }