.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/OperationCanceledException
if (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 进行异常报警的更多相关文章
- Net Core集成Exceptionless分布式日志功能以及全局异常过滤
Net Core集成Exceptionless分布式日志功能以及全局异常过滤 相信很多朋友都看过我的上篇关于Exceptionless的简单入门教程[asp.Net Core免费开源分布式异常日志收集 ...
- ABP官方文档翻译 6.2.1 ASP.NET Core集成
ASP.NET Core 介绍 迁移到ASP.NET Core? 启动模板 配置 启动类 模块配置 控制器 应用服务作为控制器 过滤器 授权过滤器 审计Action过滤器 校验过滤器 工作单元Acti ...
- [Abp 源码分析]十七、ASP.NET Core 集成
0. 简介 整个 Abp 框架最为核心的除了 Abp 库之外,其次就是 Abp.AspNetCore 库了.虽然 Abp 本身是可以用于控制台程序的,不过那样的话 Abp 就基本没什么用,还是需要集合 ...
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
C#实现多级子目录Zip压缩解压实例 参考 https://blog.csdn.net/lki_suidongdong/article/details/20942977 重点: 实现多级子目录的压缩, ...
- 【flask】项目集成Sentry收集线上错误日志
flask集成sentry分为4个步骤: 首先在sentry官网注册1个账号 然后创建1个新的项目,这里我选择的是flask,这会得到一些关于sdk的使用说明 接下来创建一个简单的flask项目使用s ...
- asp.net core 集成 Prometheus
asp.net core 集成 prometheus Intro Prometheus 是一个开源的现代化,云原生的系统监控框架,并且可以轻松的集成 PushGateway, AlertManager ...
- .NET Core集成CorrelationId实现全链路日志输出
.NET Core集成CorrelationId实现全链路日志输出 一,链路追踪 随着微服务架构的流行,一次请求会涉及多个服务的调用,并且服务本身也可能会依赖其他服务,整个请求路径会构成一个调用链,当 ...
- hive集成sentry
1.安装配置sentry 详细步骤见上一篇安装配置sentry 2.配置hive 2.1 Hive-server2集成Sentry 在 /etc/hive/conf/hive-site.xml中添加: ...
- asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程
最近在学习张善友老师的NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ !因此学习了一下这个开源框架!下面对Exceptionl ...
随机推荐
- ajax参数contentType与数据提交方式
使用bootstrapTable时,服务器端无法获取参数(flask,request.form.get方法),检查发现是因为ajax提交的时候,方式是payload,要想用form提交,需要设置con ...
- django 从零开始 8 用户登录验证 待测
看文档 djang 自带一个用户登录验证的方法,不过有些看着懵逼,去网上找了一圈,发现很多都是照抄文档说明的,几乎没说啥原理 特别是 from django.contrib.auth import a ...
- Django中使用CORS实现跨域请求
跨域请求: 请求url包含协议.网址.端口,任何一种不同都是跨域请求. 1.安装cors模块 pip install django-cors-headers2.添加应用 INSTALLED_ ...
- 曹工说Spring Boot源码(23)-- ASM又立功了,Spring原来是这么递归获取注解的元注解的
写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...
- Gitblit无法查看单个文件解决方案
一个简单的解决方案是在reference.properties中设置: web.mountParameters = false 在这种情况下,您完全避免了该问题,因为项目名称,分支和文件名作为查询字符 ...
- kerberos系列之hdfs&yarn认证配置
一.安装hadoop 1.解压安装包重命名安装目录 [root@cluster2_host1 data]# tar -zxvf hadoop-2.7.1.tar.gz -C /usr/local/ [ ...
- Bisecting GlcNAc is a general suppressor of terminal modification of N-glycan (解读人:王茹凯)
文献名:Bisecting GlcNAc is a general suppressor of terminal modification of N-glycan(平分GlcNAc是N-聚糖末端修饰的 ...
- redhat7安装
------------恢复内容开始------------ 新建虚拟机向导(自定义) 指定虚拟机安装位置,把他放在固态硬盘提升他的运行速度(不推荐,一般将位置定为非系统盘) 选择系统镜像文件 开机选 ...
- 面试刷题17:线程两次start()会发生什么?
线程是并发编程的基础元素,是系统调度的最小单元,现代的jvm直接对应了内核线程.为了降低并发编程的门槛,go语言引入了协程. 你好,我是李福春,我在准备面试,今天的题目是? 一个线程两次调用start ...
- Hive内外表的区分方法及内外部差异
Hive内外部区分方法 查看hive元数据:进入mysql中hive元数据库,查看TBLS表,查看对应的表名和表类型: 在hive-cli界面:desc extended tablename,查看Ta ...