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
類別,可以輕鬆記錄方法呼叫和參數,有助於快速定位問題。