feat: 日志完善

master
Tongg 9 months ago
parent ebf186cb2b
commit ce3563e2e0
  1. 27
      Model/Extension/CommonExtension.cs
  2. 3
      Model/Services/SOCClientService.cs
  3. 6
      ViewModel/Grading/DiamondSelectVM.cs
  4. 11
      ViewModel/Grading/GradingLoadingVM.cs

@ -1,4 +1,6 @@
using System.Collections.Concurrent;
using System.Globalization; using System.Globalization;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
namespace SparkClient.Model.Extension; namespace SparkClient.Model.Extension;
@ -21,6 +23,31 @@ public static class CommonExtension
return obj.ToString(); return obj.ToString();
} }
} }
// 缓存类型是否重写ToString的检查结果(提升性能)
private static readonly ConcurrentDictionary<Type, bool> _toStringOverriddenCache = new();
/// <summary>
/// 增强版安全ToString(自动处理未重写ToString的情况)
/// </summary>
public static string ToSafeAbundantString(this object obj)
{
if (obj == null) return "";
var type = obj.GetType();
// 判断是否重写了ToString方法
var hasCustomToString = _toStringOverriddenCache.GetOrAdd(type, t =>
{
var toStringMethod = t.GetMethod("ToString", Type.EmptyTypes);
return toStringMethod?.DeclaringType != typeof(object);
});
return hasCustomToString
? obj.ToString() // 使用自定义的ToString
: JsonConvert.SerializeObject(obj); // 未重写时序列化为JSON
}
/// <summary> /// <summary>
/// 简单的判断字符串是否为Null或空白 /// 简单的判断字符串是否为Null或空白
/// </summary> /// </summary>

@ -389,6 +389,7 @@ namespace SparkClient.Model.Services
public async Task<string> OpenPump(bool isOpen) public async Task<string> OpenPump(bool isOpen)
{ {
// if(GenImage) return StatusCodes.DeviceNotFound; // if(GenImage) return StatusCodes.DeviceNotFound;
Logger.Info($"气泵开关请求发起{isOpen}");
int param = isOpen ? 1 : 0 ; int param = isOpen ? 1 : 0 ;
string url = $"{_baseUrl}/set_pump?on={param}"; string url = $"{_baseUrl}/set_pump?on={param}";
Logger.Debug(url); Logger.Debug(url);
@ -403,7 +404,7 @@ namespace SparkClient.Model.Services
Logger.Debug(result.Status); Logger.Debug(result.Status);
return result.Status; return result.Status;
} }
Logger.Info($"气泵开关请求发起完毕");
return StatusCodes.DeviceNotFound; return StatusCodes.DeviceNotFound;
} }
catch (Exception e) catch (Exception e)

@ -21,6 +21,7 @@ using SparkClient.Model.Common;
using Color = System.Windows.Media.Color; using Color = System.Windows.Media.Color;
using MessageBox = SparkClient.Views.Dialog.MessageBox; using MessageBox = SparkClient.Views.Dialog.MessageBox;
using SparkClient.Model.Attributes; using SparkClient.Model.Attributes;
using SparkClient.Model.Extension;
namespace SparkClient.ViewModel.Grading; namespace SparkClient.ViewModel.Grading;
@ -185,6 +186,7 @@ public class DiamondSelectVM : BaseViewModel
//json模式 //json模式
{ {
Logger.Info($"当前运行JSON模式:{runModel}");
var loadingView = new GradingLoadingVM(param.ToString(), DiamondCode); var loadingView = new GradingLoadingVM(param.ToString(), DiamondCode);
BaseControlVM vm = new BaseControlVM(loadingView, MultilingualHelper.getString("wait")); BaseControlVM vm = new BaseControlVM(loadingView, MultilingualHelper.getString("wait"));
vm.WindowTitle = string.IsNullOrWhiteSpace(DiamondCode) ? vm.WindowTitle : $"{vm.WindowTitle} - {DiamondCode}"; vm.WindowTitle = string.IsNullOrWhiteSpace(DiamondCode) ? vm.WindowTitle : $"{vm.WindowTitle} - {DiamondCode}";
@ -209,6 +211,7 @@ public class DiamondSelectVM : BaseViewModel
else if ("1".Equals(runModel)) else if ("1".Equals(runModel))
{ {
//Image模式 //Image模式
Logger.Info($"当前运行Image模式:{runModel}");
var loadingView = new GradingLoadingVM(param.ToString(), DiamondCode); var loadingView = new GradingLoadingVM(param.ToString(), DiamondCode);
BaseControlVM vm = new BaseControlVM(loadingView, MultilingualHelper.getString("wait")); BaseControlVM vm = new BaseControlVM(loadingView, MultilingualHelper.getString("wait"));
vm.WindowTitle = string.IsNullOrWhiteSpace(DiamondCode) ? vm.WindowTitle : $"{vm.WindowTitle} - {DiamondCode}"; vm.WindowTitle = string.IsNullOrWhiteSpace(DiamondCode) ? vm.WindowTitle : $"{vm.WindowTitle} - {DiamondCode}";
@ -235,7 +238,7 @@ public class DiamondSelectVM : BaseViewModel
else else
{ {
//正常模式 //正常模式
Logger.Info($"当前运行正常模式:{runModel}");
var loadingView = new GradingLoadingVM(param.ToString(), DiamondCode); var loadingView = new GradingLoadingVM(param.ToString(), DiamondCode);
BaseControlVM vm = new BaseControlVM(loadingView, MultilingualHelper.getString("wait")); BaseControlVM vm = new BaseControlVM(loadingView, MultilingualHelper.getString("wait"));
vm.WindowTitle = string.IsNullOrWhiteSpace(DiamondCode) ? vm.WindowTitle : $"{vm.WindowTitle} - {DiamondCode}"; vm.WindowTitle = string.IsNullOrWhiteSpace(DiamondCode) ? vm.WindowTitle : $"{vm.WindowTitle} - {DiamondCode}";
@ -665,6 +668,7 @@ public class DiamondSelectVM : BaseViewModel
try try
{ {
//WindowManager.mainViewModel.Content = WindowManager.PreviousVM(); //WindowManager.mainViewModel.Content = WindowManager.PreviousVM();
Logger.Info($"检测完毕,跳转至结果页面:{param.ToSafeAbundantString()}");
BaseControlVM vm = new BaseControlVM(new GradingResultVM(param), MultilingualHelper.getString("DetectionResult")); BaseControlVM vm = new BaseControlVM(new GradingResultVM(param), MultilingualHelper.getString("DetectionResult"));
var ct = param.measurements.VOLUME / 57; var ct = param.measurements.VOLUME / 57;
vm.WindowTitle = string.IsNullOrWhiteSpace(param.DiamondCode) ? vm.WindowTitle : $"{vm.WindowTitle} - {param.DiamondCode}({ct.ToString("F3")}ct)"; vm.WindowTitle = string.IsNullOrWhiteSpace(param.DiamondCode) ? vm.WindowTitle : $"{vm.WindowTitle} - {param.DiamondCode}({ct.ToString("F3")}ct)";

@ -154,7 +154,7 @@ public class GradingLoadingVM : BaseViewModel,IDisposable
string fileName = jsonImport.FilePath.Text; string fileName = jsonImport.FilePath.Text;
string[] lines = File.ReadAllLines(fileName); string[] lines = File.ReadAllLines(fileName);
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
Logger.Info($"Json模式,文件路径:{fileName}");
foreach (var line in lines) foreach (var line in lines)
{ {
stringBuilder.Append(line); stringBuilder.Append(line);
@ -171,6 +171,7 @@ public class GradingLoadingVM : BaseViewModel,IDisposable
Parameter.CrownType = _diamnondType.Split(" ")[1]; Parameter.CrownType = _diamnondType.Split(" ")[1];
Parameter.PavType = _diamnondType.Split(" ")[2]; Parameter.PavType = _diamnondType.Split(" ")[2];
Parameter.error_msg = _diamnondType; Parameter.error_msg = _diamnondType;
await CompleteProgressQuicklyAsync(); await CompleteProgressQuicklyAsync();
return 0; return 0;
} }
@ -219,6 +220,7 @@ public class GradingLoadingVM : BaseViewModel,IDisposable
{ {
mnFiles.Add(name.Replace("%d", i.ToString())); mnFiles.Add(name.Replace("%d", i.ToString()));
} }
Logger.Info($"Image模式,图片路径:{strImageModeImagePath}");
LoadImages(mnFiles); LoadImages(mnFiles);
} }
else else
@ -280,9 +282,10 @@ public class GradingLoadingVM : BaseViewModel,IDisposable
new JProperty("algorithm_log_path", algorithm_log_path), new JProperty("algorithm_log_path", algorithm_log_path),
new JProperty("algo_config", JObject.Parse(algo_config)) new JProperty("algo_config", JObject.Parse(algo_config))
); );
Logger.Info($"算法启动,输入参数:{jsonData.ToString()}");
_scanner = new Scanner(diamond); _scanner = new Scanner(diamond);
var detectTask = _scanner.DetectAsyncByJsonStr(jsonData.ToString()); var detectTask = _scanner.DetectAsyncByJsonStr(jsonData.ToString());
Logger.Info($"开始等待算法结果");
await detectTask; await detectTask;
if (detectTask.Status == TaskStatus.RanToCompletion) if (detectTask.Status == TaskStatus.RanToCompletion)
{ {
@ -310,6 +313,8 @@ public class GradingLoadingVM : BaseViewModel,IDisposable
private async Task<int> ReslutGen(Task<DiaResult> detectTask) private async Task<int> ReslutGen(Task<DiaResult> detectTask)
{ {
bool hasErr = false; bool hasErr = false;
Logger.Info($"算法运行完毕:{detectTask.Status}");
Logger.Info($"算法运行结果:{detectTask.Result.ToSafeAbundantString()}");
try try
{ {
CompleteProgressQuicklyAsync(); CompleteProgressQuicklyAsync();
@ -357,6 +362,7 @@ public class GradingLoadingVM : BaseViewModel,IDisposable
try try
{ {
Logger.Info($"算法结果Json单独保存至log/result");
string parameterJson = JsonConvert.SerializeObject(parameter); string parameterJson = JsonConvert.SerializeObject(parameter);
parameterJson = JToken.Parse(parameterJson).ToString(); parameterJson = JToken.Parse(parameterJson).ToString();
string outputPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "logs", "result"); string outputPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "logs", "result");
@ -368,6 +374,7 @@ public class GradingLoadingVM : BaseViewModel,IDisposable
{ {
stream.Write(parameterJson); stream.Write(parameterJson);
} }
Logger.Info($"算法结果Json单独保存至log/result 完毕!");
} }
catch (Exception ex) catch (Exception ex)
{ {

Loading…
Cancel
Save