当前位置: 首页 > news >正文

.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/


http://www.taodudu.cc/news/show-911442.html

相关文章:

  • 【Python】【应用】Python应用之如何操作WiFi之一——使用pywifi
  • 【opencv】图像畸变校正
  • LeetCode96:不同的二叉搜索树
  • 如何去掉图片背景改成透明的?一键图片去底色工具推荐
  • 网上有哪些赚钱的方法能一天赚二三十?盘点7个靠谱的搞钱副业和赚钱软件
  • 渗透测试流程
  • .NET Core 3.1 的REST 和gRPC 性能测试
  • 从对我的质疑说起,谈谈Linux下的文件删除
  • 关于 Blazor Server Side 的一些杂项, 感想
  • 重现江湖!大数据高并发——架构师秘籍
  • ASP.NET Core+Quartz.Net实现web定时任务
  • ASP.NET CORE WEBAPI文件下载
  • .NET Core + Kubernetes:快速体验
  • 海底捞涨价,有错吗?
  • .NET Core + Kubernetes:Pod
  • .NET项目升级手记:可为空引用
  • .NET与鲲鹏共展翅,昇腾九万里(一)
  • 十问十答 Ms-PL 许可证
  • 从案例角度解析建模平台动态规则引擎
  • 想基于K8s按需扩展应用程序,可从这几方面入手
  • EntityFramework Core 3.x上下文构造函数可以注入实例呢?
  • IO 模型知多少
  • 让 .NET 轻松构建中间件模式代码
  • 从编码层面对比java和c#
  • 红帽借“订阅”模式成开源一哥,首创者升任总裁
  • C#两大知名Redis客户端连接哨兵集群的姿势
  • dotNET Core 3.X 请求处理管道和中间件的理解
  • 了解.NET中的垃圾回收
  • 数字化演化历史
  • 如何查找,修复和避免C#.NET中内存泄漏的8个最佳实践
  • ASP.NET Core技术研究-探秘依赖注入框架
  • 从项目到产品: 软件时代需要价值流架构师 | IDCF
  • 推荐一个集录屏、截图、音频于一体的软件给大家
  • WebAssembly增加Go语言绑定
  • .NET中的内存管理
  • .Net微服务实战之技术架构分层篇