diff --git a/src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/Microsoft.CmdPal.UI.ViewModels.csproj b/src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/Microsoft.CmdPal.UI.ViewModels.csproj index 7644c71cca1e..867bc156bbd0 100644 --- a/src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/Microsoft.CmdPal.UI.ViewModels.csproj +++ b/src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/Microsoft.CmdPal.UI.ViewModels.csproj @@ -23,6 +23,7 @@ + diff --git a/src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/ShellViewModel.cs b/src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/ShellViewModel.cs index 2220b836e5ca..4c10fb523d98 100644 --- a/src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/ShellViewModel.cs +++ b/src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/ShellViewModel.cs @@ -6,11 +6,11 @@ using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using CommunityToolkit.Mvvm.Messaging; -using Microsoft.CmdPal.Common; using Microsoft.CmdPal.UI.ViewModels.Messages; using Microsoft.CmdPal.UI.ViewModels.Models; using Microsoft.CmdPal.ViewModels.Messages; using Microsoft.CommandPalette.Extensions; +using Microsoft.Extensions.Logging; namespace Microsoft.CmdPal.UI.ViewModels; @@ -24,6 +24,7 @@ public partial class ShellViewModel : ObservableObject, private readonly IAppHostService _appHostService; private readonly TaskScheduler _scheduler; private readonly IPageViewModelFactoryService _pageViewModelFactory; + private readonly ILogger _logger; private readonly Lock _invokeLock = new(); private Task? _handleInvokeTask; @@ -63,7 +64,7 @@ public PageViewModel CurrentPage } catch (Exception ex) { - CoreLogger.LogError(ex.ToString()); + _logger.LogError(ex, "Failed to dispose previous page ViewModel"); } } } @@ -91,12 +92,14 @@ public ShellViewModel( TaskScheduler scheduler, IRootPageService rootPageService, IPageViewModelFactoryService pageViewModelFactory, - IAppHostService appHostService) + IAppHostService appHostService, + ILogger logger) { _pageViewModelFactory = pageViewModelFactory; _scheduler = scheduler; _rootPageService = rootPageService; _appHostService = appHostService; + _logger = logger; NullPage = new NullPageViewModel(_scheduler, appHostService.GetDefaultHost()); _currentPage = new LoadingPageViewModel(null, _scheduler, appHostService.GetDefaultHost()); @@ -167,7 +170,7 @@ private async Task LoadPageViewModelAsync(PageViewModel viewModel, CancellationT { if (viewModel.InitializeCommand.ExecutionTask.Exception is AggregateException ex) { - CoreLogger.LogError(ex.ToString()); + _logger.LogError(ex, "Failed to initialize page ViewModel"); } } else @@ -185,7 +188,7 @@ private async Task LoadPageViewModelAsync(PageViewModel viewModel, CancellationT } catch (Exception ex) { - CoreLogger.LogError(ex.ToString()); + _logger.LogError(ex, "Failed to dispose page ViewModel after navigation cancellation"); } } @@ -215,7 +218,7 @@ private async Task LoadPageViewModelAsync(PageViewModel viewModel, CancellationT } catch (Exception ex) { - CoreLogger.LogError(ex.ToString()); + _logger.LogError(ex, "Failed to dispose page ViewModel after navigation cancellation"); } } @@ -245,7 +248,7 @@ private void PerformCommand(PerformCommandMessage message) } catch (Exception ex) { - CoreLogger.LogError(ex.ToString()); + _logger.LogError(ex, "Failed to cancel previous navigation"); } finally { @@ -282,7 +285,7 @@ private void PerformCommand(PerformCommandMessage message) { if (command is IPage page) { - CoreLogger.LogDebug($"Navigating to page"); + _logger.LogDebug("Navigating to page"); _isNested = !isMainPage; _currentlyTransient = message.TransientPage; @@ -301,7 +304,7 @@ private void PerformCommand(PerformCommandMessage message) var pageViewModel = _pageViewModelFactory.TryCreatePageViewModel(page, _isNested, host!, providerContext); if (pageViewModel is null) { - CoreLogger.LogError($"Failed to create ViewModel for page {page.GetType().Name}"); + _logger.LogError("Failed to create ViewModel for page {PageType}", page.GetType().Name); throw new NotSupportedException(); } @@ -335,7 +338,7 @@ private void PerformCommand(PerformCommandMessage message) } else if (command is IInvokableCommand invokable) { - CoreLogger.LogDebug($"Invoking command"); + _logger.LogDebug("Invoking command"); WeakReferenceMessenger.Default.Send(); StartInvoke(message, invokable, host); @@ -421,7 +424,7 @@ private void UnsafeHandleCommandResult(ICommandResult? result) } var kind = result.Kind; - CoreLogger.LogDebug($"handling {kind.ToString()}"); + _logger.LogDebug("Handling command result {Kind}", kind); WeakReferenceMessenger.Default.Send(new(kind)); switch (kind) diff --git a/src/modules/cmdpal/Microsoft.CmdPal.UI/PowerToysRootPageService.cs b/src/modules/cmdpal/Microsoft.CmdPal.UI/PowerToysRootPageService.cs index f24d9273f684..05013c698c3d 100644 --- a/src/modules/cmdpal/Microsoft.CmdPal.UI/PowerToysRootPageService.cs +++ b/src/modules/cmdpal/Microsoft.CmdPal.UI/PowerToysRootPageService.cs @@ -4,13 +4,13 @@ using System.Runtime.InteropServices; using System.Runtime.Versioning; -using ManagedCommon; using Microsoft.CmdPal.Common.Services; using Microsoft.CmdPal.Common.Text; using Microsoft.CmdPal.UI.ViewModels; using Microsoft.CmdPal.UI.ViewModels.MainPage; using Microsoft.CmdPal.UI.ViewModels.Services; using Microsoft.CommandPalette.Extensions; +using Microsoft.Extensions.Logging; using WinRT; // To learn more about WinUI, the WinUI project structure, @@ -20,13 +20,15 @@ namespace Microsoft.CmdPal.UI; internal sealed class PowerToysRootPageService : IRootPageService { private readonly TopLevelCommandManager _tlcManager; + private readonly ILogger _logger; private IExtensionWrapper? _activeExtension; private Lazy _mainListPage; - public PowerToysRootPageService(TopLevelCommandManager topLevelCommandManager, AliasManager aliasManager, IFuzzyMatcherProvider fuzzyMatcherProvider, ISettingsService settingsService, IAppStateService appStateService) + public PowerToysRootPageService(TopLevelCommandManager topLevelCommandManager, AliasManager aliasManager, IFuzzyMatcherProvider fuzzyMatcherProvider, ISettingsService settingsService, IAppStateService appStateService, ILogger logger) { _tlcManager = topLevelCommandManager; + _logger = logger; _mainListPage = new Lazy(() => { @@ -67,8 +69,7 @@ private void OnPerformTopLevelCommand(object? context) } catch (Exception ex) { - Logger.LogError("Failed to update history in PowerToysRootPageService"); - Logger.LogError(ex.ToString()); + _logger.LogError(ex, "Failed to update history in PowerToysRootPageService"); } } @@ -109,13 +110,13 @@ public void SetActiveExtension(IExtensionWrapper? extension) var hr = Native.CoAllowSetForegroundWindow(intPtr); if (hr != 0) { - Logger.LogWarning($"Error giving foreground rights: 0x{hr.Value:X8}"); + _logger.LogWarning("Error giving foreground rights: 0x{HRESULT:X8}", hr.Value); } } } catch (Exception ex) { - ManagedCommon.Logger.LogError(ex.ToString()); + _logger.LogError(ex, "Failed to grant foreground window rights to extension"); } } }