Bläddra i källkod

Logger.StackTrace

龙腾猫跃 3 månader sedan
förälder
incheckning
c18fef7074
3 ändrade filer med 9 tillägg och 2 borttagningar
  1. 6 0
      Shared/General/Logger.cs
  2. 2 1
      Shared/General/Workers/RedoableWorker.cs
  3. 1 1
      Wpf/Utils/WindowsUtils.cs

+ 6 - 0
Shared/General/Logger.cs

@@ -77,6 +77,12 @@ public static class Logger {
     public static void SendToDebug(Exception ex, string? message = null, LogLevel level = LogLevel.Error, [CallerFilePath] string filePath = "")
         => Debug.WriteLine($"{BaseLogger.GetLogPrefix(level, filePath)}{(message is null ? "" : $"{message}:")}{ex.GetDisplay(true)}");
 
+    /// <summary>
+    /// 记录当前堆栈信息。
+    /// </summary>
+    public static void StackTrace(LogLevel level = LogLevel.Trace, [CallerFilePath] string filePath = "")
+        => Instance.Log(null, new StackTrace(skipFrames: 1, fNeedFileInfo: true).ToString(), level, LogBehavior.None, filePath);
+
     #region 内插优化
 
     // VB.NET:由于不兼容 InterpolatedStringHandler,只能手动使用 Lambda

+ 2 - 1
Shared/General/Workers/RedoableWorker.cs

@@ -132,7 +132,8 @@ public abstract class RedoableWorkerBase<TOut>(Func<CancellationToken?, Progress
                 Succeeded?.Invoke();
             } catch (Exception ex) {
                 if (!ex.IsCanceled())
-                    Logger.Log(ex, $"{creatorMemberName}:运行失败{(pendingRedo ? ",但即将重启,或可忽略" : "")}", pendingRedo ? LogLevel.Info : LogLevel.Warn);
+                    Logger.Log(ex, $"{creatorMemberName}:运行失败{(pendingRedo ? ",但即将重启,或可忽略" : "")}", 
+                        pendingRedo ? LogLevel.Warn : LogLevel.Error, LogBehavior.ToastIfDebug);
                 lock (this) {
                     realCts?.Dispose();
                     if (pendingRedo) { // 接取重启请求

+ 1 - 1
Wpf/Utils/SystemUtils.cs → Wpf/Utils/WindowsUtils.cs

@@ -1,7 +1,7 @@
 using System.Security.Principal;
 
 namespace MeloongCore;
-public static class SystemUtils {
+public static class WindowsUtils {
 
     /// <summary>
     /// 当前程序是否拥有管理员权限。