Inject ILogger to RequestLocalization Middleware (#10946)
This commit is contained in:
parent
7e162096a9
commit
ba8c6ccf6f
|
|
@ -99,7 +99,10 @@ namespace Microsoft.AspNetCore.Localization
|
|||
}
|
||||
public partial class RequestLocalizationMiddleware
|
||||
{
|
||||
[System.ObsoleteAttribute("This constructor is obsolete and will be removed in a future version. Use RequestLocalizationMiddleware(RequestDelegate next, IOptions<RequestLocalizationOptions> options, ILoggerFactory loggerFactory) instead")]
|
||||
public RequestLocalizationMiddleware(Microsoft.AspNetCore.Http.RequestDelegate next, Microsoft.Extensions.Options.IOptions<Microsoft.AspNetCore.Builder.RequestLocalizationOptions> options) { }
|
||||
[Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute]
|
||||
public RequestLocalizationMiddleware(Microsoft.AspNetCore.Http.RequestDelegate next, Microsoft.Extensions.Options.IOptions<Microsoft.AspNetCore.Builder.RequestLocalizationOptions> options, Microsoft.Extensions.Logging.ILoggerFactory loggerFactory) { }
|
||||
[System.Diagnostics.DebuggerStepThroughAttribute]
|
||||
public System.Threading.Tasks.Task Invoke(Microsoft.AspNetCore.Http.HttpContext context) { throw null; }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ using Microsoft.AspNetCore.Http;
|
|||
using Microsoft.AspNetCore.Localization.Internal;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Logging.Abstractions;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Microsoft.Extensions.Primitives;
|
||||
|
||||
|
|
@ -26,15 +27,17 @@ namespace Microsoft.AspNetCore.Localization
|
|||
|
||||
private readonly RequestDelegate _next;
|
||||
private readonly RequestLocalizationOptions _options;
|
||||
private ILogger _logger;
|
||||
private readonly ILogger _logger;
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new <see cref="RequestLocalizationMiddleware"/>.
|
||||
/// </summary>
|
||||
/// <param name="next">The <see cref="RequestDelegate"/> representing the next middleware in the pipeline.</param>
|
||||
/// <param name="options">The <see cref="RequestLocalizationOptions"/> representing the options for the
|
||||
/// <param name="loggerFactory">The <see cref="ILoggerFactory"/> used for logging.</param>
|
||||
/// <see cref="RequestLocalizationMiddleware"/>.</param>
|
||||
public RequestLocalizationMiddleware(RequestDelegate next, IOptions<RequestLocalizationOptions> options)
|
||||
[ActivatorUtilitiesConstructor]
|
||||
public RequestLocalizationMiddleware(RequestDelegate next, IOptions<RequestLocalizationOptions> options, ILoggerFactory loggerFactory)
|
||||
{
|
||||
if (options == null)
|
||||
{
|
||||
|
|
@ -42,9 +45,22 @@ namespace Microsoft.AspNetCore.Localization
|
|||
}
|
||||
|
||||
_next = next ?? throw new ArgumentNullException(nameof(next));
|
||||
_logger = loggerFactory?.CreateLogger<RequestLocalizationMiddleware>() ?? throw new ArgumentNullException(nameof(loggerFactory));
|
||||
_options = options.Value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new <see cref="RequestLocalizationMiddleware"/>.
|
||||
/// </summary>
|
||||
/// <param name="next">The <see cref="RequestDelegate"/> representing the next middleware in the pipeline.</param>
|
||||
/// <param name="options">The <see cref="RequestLocalizationOptions"/> representing the options for the
|
||||
/// <see cref="RequestLocalizationMiddleware"/>.</param>
|
||||
[Obsolete("This constructor is obsolete and will be removed in a future version. Use RequestLocalizationMiddleware(RequestDelegate next, IOptions<RequestLocalizationOptions> options, ILoggerFactory loggerFactory) instead")]
|
||||
public RequestLocalizationMiddleware(RequestDelegate next, IOptions<RequestLocalizationOptions> options)
|
||||
: this(next, options, NullLoggerFactory.Instance)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Invokes the logic of the middleware.
|
||||
/// </summary>
|
||||
|
|
@ -84,8 +100,7 @@ namespace Microsoft.AspNetCore.Localization
|
|||
|
||||
if (cultureInfo == null)
|
||||
{
|
||||
EnsureLogger(context);
|
||||
_logger?.UnsupportedCultures(provider.GetType().Name, cultures);
|
||||
_logger.UnsupportedCultures(provider.GetType().Name, cultures);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -98,8 +113,7 @@ namespace Microsoft.AspNetCore.Localization
|
|||
|
||||
if (uiCultureInfo == null)
|
||||
{
|
||||
EnsureLogger(context);
|
||||
_logger?.UnsupportedUICultures(provider.GetType().Name, uiCultures);
|
||||
_logger.UnsupportedUICultures(provider.GetType().Name, uiCultures);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -136,11 +150,6 @@ namespace Microsoft.AspNetCore.Localization
|
|||
await _next(context);
|
||||
}
|
||||
|
||||
private void EnsureLogger(HttpContext context)
|
||||
{
|
||||
_logger = _logger ?? context.RequestServices.GetService<ILogger<RequestLocalizationMiddleware>>();
|
||||
}
|
||||
|
||||
private static void SetCurrentThreadCulture(RequestCulture requestCulture)
|
||||
{
|
||||
CultureInfo.CurrentCulture = requestCulture.Culture;
|
||||
|
|
@ -212,4 +221,4 @@ namespace Microsoft.AspNetCore.Localization
|
|||
return culture;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue