日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

.net core 集成 sentry 进行异常报警

發布時間:2023/12/4 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .net core 集成 sentry 进行异常报警 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

.net core 集成 sentry 進行異常報警

Intro

Sentry 是一個實時事件日志記錄和匯集的平臺。其專注于錯誤監控以及提取一切事后處理所需信息而不依賴于麻煩的用戶反饋。它分為客戶端和服務端,客戶端(目前客戶端有 C#, Python, PHP, JavaScript, Ruby等多種語言)就嵌入在你的應用程序中間,程序出現異常就向服務端發送消息,服務端將消息記錄到數據庫中并提供一個web頁方便查看。

Sentry 是 Python 寫的一個開源的項目 https://github.com/getsentry/sentry 而且可以滿足私有部署的需求

官方介紹:

Sentry is cross-platform application monitoring, with a focus on error reporting.

Sentry fundamentally is a service that helps you monitor and fix crashes in realtime. The server is in Python, but it contains a full API for sending events from any language, in any application

使用效果

sentry 里每一個錯誤/異常被視為一個 issue,在 sentry 的后臺可以看到對應項目的錯誤信息,并且會受到 sentry 的郵件推送

dotnetcore 集成

針對 asp.net core 的集成,分為兩種方式,sentry 提供了一個底層一點的基于 Microsoft.Extensions.Logging 的集成方式( Sentry.Extensions.Logging)和基于 asp.net core 框架的集成方式( Sentry.AspNetCore),我目前在用基于 logging 方式的集成方式(基于 asp.net core 的集成是后來才有的,后面也沒有再修改),如果要集成 asp.net core 項目可以直接使用 Sentry.AspNetCore

我目前用的是 Sentry.Extensions.Logging 基本配置如下:

loggerFactory.AddSentry(options =>{options.Dsn = Configuration.GetAppSetting("SentryClientKey");});

Dsn 是創建項目之后在項目的配置里可以看得到

More Config

loggerFactory.AddSerilog().AddSentry(options =>{options.Dsn = Configuration.GetAppSetting("SentryClientKey");options.Environment = env.EnvironmentName; // 設置環境options.MinimumEventLevel = LogLevel.Error; // 設置 sentry event 級別});

修改 sentry event 信息,對于發生的錯誤異常可以在發送到 sentry 服務器端之前做修改,對于要忽略的異常也可以在這個事件中做,比如系統中的 TaskCanceledException ,我在使用異步查詢方法的時候會傳遞一個 CancellationToken ,客戶端中斷了請求就會導致這個 Token 的 Cancel 事件被觸發,EF 就會報一個 TaskCanceledException 前段時間,sentry 經常會給我發一些異常郵件,全都是 TaskCanceledException,我們可以在這個事件里判斷如果異常時 TaskCanceledException 就返回一個 null, 這樣這個異常就不會被提交到 sentry 服務器端了

options.BeforeSend = (sentryEvent) => {// ignore TaskCanceledException/OperationCanceledExceptionif (sentryEvent.Exception is TaskCanceledException ||sentryEvent.Exception is OperationCanceledException){return null;}return sentryEvent; };

More

除了基本的異常信息的展示和推送,sentry 還會做異常信息的聚合,相同的異常信息只會展示為一個,還可以做 issue 的分發指派,還可以和 Github、Gitlab 等第三方服務集成,在 Github 中創建 issue 等,更多用法等待著你去發現

Reference

  • https://github.com/getsentry/sentry

  • https://docs.sentry.io/platforms/dotnet/microsoft-extensions-logging/

  • https://docs.sentry.io/platforms/dotnet/aspnetcore/

總結

以上是生活随笔為你收集整理的.net core 集成 sentry 进行异常报警的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。