[英]How to customize exception output using serilog
我使用 Serilog 作為我的日志框架(使用 Seq 作為我的日志接收器)。 在記錄異常時,我使用的是類似的東西:
log.Error(ex, "Operation Failed");
我的應用程序大量使用 async/await 方法。 當發生未處理的異常時,堆棧跟蹤非常難以閱讀。 有一個 nuget 包可以清理異步堆棧跟蹤 ( https://github.com/aelij/AsyncFriendlyStackTrace )。 這將創建一個擴展方法,讓您可以訪問修改后的/干凈的堆棧跟蹤:
ex.ToAsyncString()
我希望能夠在將堆棧跟蹤寫入 Seq 之前使用該庫攔截堆棧跟蹤,並記錄干凈/修改后的堆棧跟蹤。
Serilog/Seq 有沒有辦法控制發送到日志接收器的錯誤字符串的確切輸出?
也許充實在這里可能會有所幫助。 雖然在該鏈接中沒有具體討論,但您可以構建自定義豐富器:
public class ExceptionEnricher : ILogEventEnricher
{
public void Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory)
{
if (logEvent.Exception != null)
{
// do something here
propertyFactory.CreateProperty("ExtraExceptionDetail", extraDetail);
}
}
}
然后……
var loggerConfig = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Seq(url)
.Enrich.With<ExceptionEnricher>()
.Enrich.FromLogContext();
我對您引用的包沒有任何經驗,但是這種方法可以讓您在將事件寫入 Seq 之前攔截和修改/添加/刪除事件的屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.