.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 进行异常报警的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 没用过.gitignore还敢自称高级开
- 下一篇: .NET Core 3.1 的REST