#0044 使用基础库层面的日志功能

This commit is contained in:
zhengxuan.zhang
2026-03-23 14:04:53 +08:00
parent caffbc009e
commit 687d0b2a87
18 changed files with 124 additions and 105 deletions
@@ -8,6 +8,7 @@ using System.Windows.Media.Imaging;
using Microsoft.Win32;
using Prism.Commands;
using Prism.Mvvm;
using XP.Common.Logging.Interfaces;
using XplorePlane.Models;
using XplorePlane.Services;
@@ -21,6 +22,7 @@ namespace XplorePlane.ViewModels
private readonly IImageProcessingService _imageProcessingService;
private readonly IPipelineExecutionService _executionService;
private readonly IPipelinePersistenceService _persistenceService;
private readonly ILoggerService _logger;
private PipelineNodeViewModel _selectedNode;
private BitmapSource _sourceImage;
@@ -37,11 +39,13 @@ namespace XplorePlane.ViewModels
public PipelineEditorViewModel(
IImageProcessingService imageProcessingService,
IPipelineExecutionService executionService,
IPipelinePersistenceService persistenceService)
IPipelinePersistenceService persistenceService,
ILoggerService logger)
{
_imageProcessingService = imageProcessingService ?? throw new ArgumentNullException(nameof(imageProcessingService));
_executionService = executionService ?? throw new ArgumentNullException(nameof(executionService));
_persistenceService = persistenceService ?? throw new ArgumentNullException(nameof(persistenceService));
_logger = logger?.ForModule<PipelineEditorViewModel>() ?? throw new ArgumentNullException(nameof(logger));
PipelineNodes = new ObservableCollection<PipelineNodeViewModel>();
AvailableDevices = new ObservableCollection<string>();
@@ -153,30 +157,30 @@ namespace XplorePlane.ViewModels
private void AddOperator(string operatorKey)
{
Serilog.Log.Debug("AddOperator 被调用,operatorKey={OperatorKey}", operatorKey);
_logger.Debug("AddOperator 被调用,operatorKey={OperatorKey}", operatorKey);
if (string.IsNullOrWhiteSpace(operatorKey))
{
StatusMessage = "算子键不能为空";
Serilog.Log.Warning("AddOperator 失败:operatorKey 为空");
_logger.Warn("AddOperator 失败:operatorKey 为空");
return;
}
var available = _imageProcessingService.GetAvailableProcessors();
Serilog.Log.Debug("可用算子数量:{Count},包含 {Key}{Contains}",
_logger.Debug("可用算子数量:{Count},包含 {Key}{Contains}",
available.Count(), operatorKey, available.Contains(operatorKey));
if (!available.Contains(operatorKey))
{
StatusMessage = $"算子 '{operatorKey}' 未注册";
Serilog.Log.Warning("AddOperator 失败:算子 {Key} 未注册", operatorKey);
_logger.Warn("AddOperator 失败:算子 {Key} 未注册", operatorKey);
return;
}
if (PipelineNodes.Count >= MaxPipelineLength)
{
StatusMessage = $"流水线节点数已达上限({MaxPipelineLength}";
Serilog.Log.Warning("AddOperator 失败:节点数已达上限 {Max}", MaxPipelineLength);
_logger.Warn("AddOperator 失败:节点数已达上限 {Max}", MaxPipelineLength);
return;
}
@@ -187,7 +191,7 @@ namespace XplorePlane.ViewModels
};
LoadNodeParameters(node);
PipelineNodes.Add(node);
Serilog.Log.Information("节点已添加到 PipelineNodes{Key} ({DisplayName}),当前节点数={Count}",
_logger.Info("节点已添加到 PipelineNodes{Key} ({DisplayName}),当前节点数={Count}",
operatorKey, displayName, PipelineNodes.Count);
StatusMessage = $"已添加算子:{displayName}";
TriggerDebouncedExecution();
@@ -457,32 +461,32 @@ namespace XplorePlane.ViewModels
PipelineNodes.Add(node);
}
Serilog.Log.Information("流水线已加载:{Name},节点数={Count}", model.Name, PipelineNodes.Count);
_logger.Info("流水线已加载:{Name},节点数={Count}", model.Name, PipelineNodes.Count);
StatusMessage = $"已加载流水线:{model.Name}{PipelineNodes.Count} 个节点)";
}
catch (Exception ex)
{
Serilog.Log.Warning("加载流水线失败:{Error}", ex.Message);
_logger.Warn("加载流水线失败:{Error}", ex.Message);
StatusMessage = $"加载失败:{ex.Message}";
}
}
private void OpenToolbox() //打开图像工具箱
{
Serilog.Log.Information("OpenToolbox 被调用");
_logger.Info("OpenToolbox 被调用");
try
{
var window = new Views.OperatorToolboxWindow
{
Owner = System.Windows.Application.Current.MainWindow
};
Serilog.Log.Information("OperatorToolboxWindow 已创建,准备 Show()");
_logger.Info("OperatorToolboxWindow 已创建,准备 Show()");
window.Show();
Serilog.Log.Information("OperatorToolboxWindow.Show() 完成");
_logger.Info("OperatorToolboxWindow.Show() 完成");
}
catch (Exception ex)
{
Serilog.Log.Error(ex, "OpenToolbox 打开窗口失败");
_logger.Error(ex, "OpenToolbox 打开窗口失败");
}
}