Browse Source

Add logging to TenantResolver for tenant resolution

pull/24376/head
maliming 9 months ago
parent
commit
ee66c7b611
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 30
      framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantResolver.cs

30
framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantResolver.cs

@ -1,6 +1,8 @@
using System;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options;
using Volo.Abp.DependencyInjection;
@ -8,25 +10,31 @@ namespace Volo.Abp.MultiTenancy;
public class TenantResolver : ITenantResolver, ITransientDependency
{
private readonly IServiceProvider _serviceProvider;
private readonly AbpTenantResolveOptions _options;
public ILogger<TenantResolver> Logger { get; set; }
protected IServiceProvider ServiceProvider { get; }
protected AbpTenantResolveOptions Options { get; }
public TenantResolver(IOptions<AbpTenantResolveOptions> options, IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
_options = options.Value;
Logger = NullLogger<TenantResolver>.Instance;
ServiceProvider = serviceProvider;
Options = options.Value;
}
public virtual async Task<TenantResolveResult> ResolveTenantIdOrNameAsync()
{
var result = new TenantResolveResult();
using (var serviceScope = _serviceProvider.CreateScope())
Logger.LogDebug("Starting resolving tenant...");
using (var serviceScope = ServiceProvider.CreateScope())
{
var context = new TenantResolveContext(serviceScope.ServiceProvider);
foreach (var tenantResolver in _options.TenantResolvers)
foreach (var tenantResolver in Options.TenantResolvers)
{
Logger.LogDebug($"Trying to resolve tenant through '{tenantResolver.Name}'...");
await tenantResolver.ResolveAsync(context);
result.AppliedResolvers.Add(tenantResolver.Name);
@ -34,15 +42,21 @@ public class TenantResolver : ITenantResolver, ITransientDependency
if (context.HasResolvedTenantOrHost())
{
result.TenantIdOrName = context.TenantIdOrName;
Logger.LogDebug($"Tenant resolved by '{tenantResolver.Name}' as '{result.TenantIdOrName ?? "Host"}'.");
break;
}
}
}
if (result.TenantIdOrName.IsNullOrEmpty() && !string.IsNullOrWhiteSpace(_options.FallbackTenant))
if (result.TenantIdOrName.IsNullOrEmpty() && !string.IsNullOrWhiteSpace(Options.FallbackTenant))
{
result.TenantIdOrName = _options.FallbackTenant;
result.TenantIdOrName = Options.FallbackTenant;
result.AppliedResolvers.Add(TenantResolverNames.FallbackTenant);
Logger.LogDebug($"No tenant resolved. Using fallback tenant as '{result.TenantIdOrName}'.");
}
else if (result.TenantIdOrName.IsNullOrEmpty())
{
Logger.LogDebug("No tenant resolved.");
}
return result;

Loading…
Cancel
Save