From f7948dfe6241a3fd6e97ca634574af12d59add73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Jasi=C5=84ski?= Date: Tue, 5 May 2026 20:10:19 +0200 Subject: [PATCH] perf: use source-generated logging (LoggerMessage) for better performance and AOT compatibility --- .../Services/KnowledgeCoordinator.cs | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/NexusReader.UI.Shared/Services/KnowledgeCoordinator.cs b/src/NexusReader.UI.Shared/Services/KnowledgeCoordinator.cs index 78d1955..223409b 100644 --- a/src/NexusReader.UI.Shared/Services/KnowledgeCoordinator.cs +++ b/src/NexusReader.UI.Shared/Services/KnowledgeCoordinator.cs @@ -7,7 +7,7 @@ using Microsoft.Extensions.Logging; namespace NexusReader.UI.Shared.Services; -public sealed class KnowledgeCoordinator : IDisposable +public sealed partial class KnowledgeCoordinator : IDisposable { private readonly IKnowledgeService _knowledgeService; private readonly IKnowledgeGraphService _graphService; @@ -46,7 +46,7 @@ public sealed class KnowledgeCoordinator : IDisposable { if (string.IsNullOrWhiteSpace(fullContent)) return; - _logger.LogInformation("[KnowledgeCoordinator] Generating full page graph for tenant: {TenantId}", tenantId); + LogGeneratingGraph(tenantId); _graphService.Clear(); _graphService.SetLoading(true); @@ -67,7 +67,7 @@ public sealed class KnowledgeCoordinator : IDisposable } catch (Exception ex) { - _logger.LogError(ex, "[KnowledgeCoordinator] Error generating graph for tenant: {TenantId}", tenantId); + LogGraphError(ex, tenantId); } } @@ -80,7 +80,7 @@ public sealed class KnowledgeCoordinator : IDisposable public async Task RequestSummaryAndQuizAsync(string content, string tenantId = "global") { _quizService.SetHydrating(true); - _logger.LogInformation("[KnowledgeCoordinator] Requesting summary and quiz for tenant: {TenantId}", tenantId); + LogRequestingSummary(tenantId); try { var result = await _knowledgeService.GetSummaryAndQuizAsync(content, tenantId); @@ -96,11 +96,11 @@ public sealed class KnowledgeCoordinator : IDisposable return packet; } - _logger.LogWarning("[KnowledgeCoordinator] Failed to get summary and quiz for tenant: {TenantId}", tenantId); + LogSummaryWarning(tenantId); } catch (Exception ex) { - _logger.LogError(ex, "[KnowledgeCoordinator] Error requesting summary and quiz for tenant: {TenantId}", tenantId); + LogSummaryError(ex, tenantId); } finally { @@ -119,4 +119,19 @@ public sealed class KnowledgeCoordinator : IDisposable { _interactionService.OnNodeSelected -= HandleNodeSelected; } + + [LoggerMessage(Level = LogLevel.Information, Message = "[KnowledgeCoordinator] Generating full page graph for tenant: {TenantId}")] + private partial void LogGeneratingGraph(string tenantId); + + [LoggerMessage(Level = LogLevel.Error, Message = "[KnowledgeCoordinator] Error generating graph for tenant: {TenantId}")] + private partial void LogGraphError(Exception ex, string tenantId); + + [LoggerMessage(Level = LogLevel.Information, Message = "[KnowledgeCoordinator] Requesting summary and quiz for tenant: {TenantId}")] + private partial void LogRequestingSummary(string tenantId); + + [LoggerMessage(Level = LogLevel.Warning, Message = "[KnowledgeCoordinator] Failed to get summary and quiz for tenant: {TenantId}")] + private partial void LogSummaryWarning(string tenantId); + + [LoggerMessage(Level = LogLevel.Error, Message = "[KnowledgeCoordinator] Error requesting summary and quiz for tenant: {TenantId}")] + private partial void LogSummaryError(Exception ex, string tenantId); }