From ee66c7b611ec4b526da7315d90242d5595094926 Mon Sep 17 00:00:00 2001 From: maliming Date: Tue, 9 Dec 2025 14:12:48 +0800 Subject: [PATCH] Add logging to TenantResolver for tenant resolution --- .../Volo/Abp/MultiTenancy/TenantResolver.cs | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantResolver.cs b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantResolver.cs index 4351ef62bb..ce45a9bf87 100644 --- a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantResolver.cs +++ b/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 Logger { get; set; } + + protected IServiceProvider ServiceProvider { get; } + protected AbpTenantResolveOptions Options { get; } public TenantResolver(IOptions options, IServiceProvider serviceProvider) { - _serviceProvider = serviceProvider; - _options = options.Value; + Logger = NullLogger.Instance; + + ServiceProvider = serviceProvider; + Options = options.Value; } public virtual async Task 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;