FluentDebugger 是一個方便的工具,用於在執行同步和異步方法時記錄執行時間和方法參數,並提供一個可自訂的例外處理機制。
- 記錄同步方法的執行時間
- 記錄異步方法的執行時間
- 可選擇記錄方法參數
- 支援自訂的例外處理機制
dotnet add package FluentDebugger您可以使用 Create 方法來建立 FluentDebugger 實例,可以選擇傳入自訂的 ILogAdapter 或是省略 log紀錄。
var debugger = FluentDebugger.Create(); // 省略 log
var debuggerWithLogger = FluentDebugger.Create(customLogger); // 使用自訂的 ILogAdapter使用 Run 方法來執行並記錄同步方法的執行時間。
var result = FluentDebugger.Create(customLogger)
.Run(() => SomeMethod());
// output: Execution time: xxx ms 使用 RunAsync 方法來執行並記錄異步方法的執行時間。
var result = await FluentDebugger.Create(customLogger)
.RunAsync(() => SomeAsyncMethod());
// output: Execution time: xxx ms 使用 LogParameters 方法來記錄方法的參數。
var result = FluentDebugger.Create(customLogger)
.LogParameters()
.Run(() => SomeMethodWithParameters(100, new List<int> { 1, 2, 3 }));
// output: "[SomeMethodWithParameters()] Parameters: `param1: 100, param2: [1, 2, 3]` | Execution time: {watch.ElapsedMilliseconds}ms 使用 Rethrow 方法來自訂例外處理機制。
var result = FluentDebugger.Create(customLogger)
.LogParameters()
.Rethrow(exceptionContext => new CustomException(exceptionContext.Exception, $"{exceptionContext.MethodName} 出現錯誤"))
.Run(() => SomeMethodThatThrows());除了在 自訂例外處理機制可以使用 ExceptionContext 類別外,在 ILogAdapter 中會自動將 ExceptionContext包進 message中。
public class ExceptionContext
{
public Exception Exception { get; set; }
public string MethodName { get; set; }
public List<KeyValuePair<string, object>> Parameters { get; set; }
public long ElapsedMilliseconds { get; set; }
}- 自動解析方法名稱:自動從表達式中提取方法名稱,無需手動指定,減少錯誤。
- 參數擷取和格式化:自動擷取並格式化方法參數,支持字典和集合類型,使記錄更直觀。
- 支援不同類型的參數:能夠處理各種參數類型,包括基本類型、集合和字典,提供靈活性。
- 簡化除錯過程:結合
FluentDebugger類別,可以輕鬆記錄方法呼叫和參數,有助於快速定位問題。