CoreWebApi集成Exceptionless
参考博客
https://www.cnblogs.com/akaxb/p/7207827.html
一、 Exceptionlessr的安装部署
依乐祝,《ASP.NET Core免费开源分布式日志收集框架Exceptionless安装配置以及简单实用》
花儿笑弯了腰,《Self Host 使用Exceptionless实时监控程序运行日志服务》
平凡网客,《Exceptionless 本地部署》
Edison Zhou 《基于Exceptionless实现分布式日志》
二、在项目(16安监webapi)中使用。
Nugget: WebApi项目引用包 Exceptionless.AspNetCore
代码: 两处 见28WebApi项目
1、StartUp类
//注意要把exceptionless的位置放最前面,之前放中间了,有个未知原因,就是记录不上异常。
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseExceptionless(Configuration);
}
2、LogFilterAttribute
public class LogFilterAttribute : ActionFilterAttribute
{
public string RequestParametersString { get; set; }
/// <summary>
/// Action执行中
/// </summary>
/// <param name="actionExecutedContext"></param>
public override void OnActionExecuting(ActionExecutingContext actionExecutedContext)
{
RequestParametersString = actionExecutedContext.ActionArguments.ToJson();
} /// <summary>
/// Action执行后
/// </summary>
/// <param name="actionExecutedContext"></param>
public override void OnActionExecuted(ActionExecutedContext actionExecutedContext)
{
string url = GetAbsoluteUri(actionExecutedContext.HttpContext.Request);
if (actionExecutedContext.Exception == null)
{
string logInfo = $"request info:{DateTime.Now}(ㄒoㄒ){url}(ㄒoㄒ){RequestParametersString}(ㄒoㄒ)";
LogHelper.Write(logInfo, LogMessageEnum.Info);
}
else
{
string error = $"Exception:{DateTime.Now}(ㄒoㄒ){url}(ㄒoㄒ){RequestParametersString}(ㄒoㄒ){actionExecutedContext.Exception.Message}";
LogHelper.Write(error, LogMessageEnum.Error); //Exceptionless
actionExecutedContext.Exception.ToExceptionless().SetHttpContext(actionExecutedContext.HttpContext).SetMessage(RequestParametersString)
.Submit();
}
} private string GetAbsoluteUri(HttpRequest request)
{
return new StringBuilder()
.Append(request.Scheme)
.Append("://")
.Append(request.Host)
.Append(request.PathBase)
.Append(request.Path)
.ToString();
}
}
配置文件: 固定格式 在对应环境的配置文件中配置
格式:
"Exceptionless": { "ApiKey": "qBkC0YAL0YkjOhHsdvdgasdfsIwywAs48UK9KWZh", "ServerUrl": "http://****** " }
ApiKey需替换
ApiKey是在系统中添加项目时生成的码。
三、查看错误日志
1、登录系统后主要用前三个模块。首页仪表盘包含其他两个的功能。
2、开发测试过程中可以优先查看Most Frequent频次最高的错误进行修改。解决完的错误可以删除掉,省得碍事。
3、上线运维时常用Most Recent 最近发生的。
4、我们将http请示参数等都会记录在错误信息中。便于调试。在点开错误信息时,也许参数过多,出现截断情况。此时可以点击request,ToggleView,查看所有信息。点击复制按钮将参数复制到记事本中简单编辑下即可。
CoreWebApi集成Exceptionless的更多相关文章
- Net Core集成Exceptionless分布式日志功能以及全局异常过滤
Net Core集成Exceptionless分布式日志功能以及全局异常过滤 相信很多朋友都看过我的上篇关于Exceptionless的简单入门教程[asp.Net Core免费开源分布式异常日志收集 ...
- .Net Core 集成ExceptionLess分布式日志框架之本地化部署
前言 公司目前使用的项目中关于日志记录这块,之前一直都是使用的Log4net 存放于后台文件中的,对于异常错误啊,或者需要查看一些详情错误的时候感觉很不方便,要到服务器上去打开日志文件检索错误,降低了 ...
- 基于.net core微服务(Consul、Ocelot、Docker、App.Metrics+InfluxDB+Grafana、Exceptionless、数据一致性、Jenkins)
1.微服务简介 一种架构模式,提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(RESTfu ...
- Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验
Net Core平台灵活简单的日志记录框架NLog初体验 前几天分享的"[Net Core集成Exceptionless分布式日志功能以及全局异常过滤][https://www.cnblog ...
- 分享一个集成.NET Core+Swagger+Consul+Polly+Ocelot+IdentityServer4+Exceptionless+Apollo+SkyWalking的微服务开发框架
集成.NET Core+Swagger+Consul+Polly+Ocelot+IdentityServer4+Exceptionless+Apollo的微服务开发框架 Github源代码地址 htt ...
- 免费开源的 .NET 分布式组件库 Exceptionless Foundatio
前言 在互联网时代,分布式应用.系统变得越来越多,我们在使用 .Net 技术构建分布式系统的时候,需要使用到一些组件或者是助手库来帮助我们提高生产力以及应用程序解耦,但是纵观.Net圈,能够符合要求的 ...
- Exceptionless 本地部署
免费开源分布式系统日志收集框架 Exceptionless 前两天看到了这篇文章,亲身体会了下,确实不错,按照官方的文档试了试本地部署,折腾一番后终于成功,记下心得在此,不敢独享. 本地部署官方wik ...
- ExceptionLess 本地部署小结
ExceptionLess 是一个免费开源分布式系统日志收集框架,地址:https://github.com/exceptionless/Exceptionless 运行环境: .NET 4.6.1 ...
- 如何扩展分布式日志组件(Exceptionless)的Webhook事件通知类型?
写在前面 从上一篇博客高并发.低延迟之C#玩转CPU高速缓存(附示例)到现在又有几个月没写博客了,啥也不说,变得越来越懒了,懒惰产生了拖延后遗症. 最近一周升级了微服务项目使用的分布式日志组件Exce ...
随机推荐
- 出于性能考虑,C语言自动地以传地址的方式将数组传递给被调函数 const 编译错误 最小权限原则
#include <stdio.h> int main(void) { char array[5]; printf("array=%p,&array[0]=%p,& ...
- iOS - 常用的CG结构体
CGPoint.CGSize.CGRect.CGRectEdge实际上都是结构体 一,几个常用的结构体 CGPoint 定义一个点,设置x坐标和y坐标 struct CGPoint { CGFlo ...
- git bash 命名
git log -p -2 我们常用 -p 选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新. git diff HEAD git clean -df 恢复到最后一次提交的改动: gi ...
- 转:ORACLE 中ROWNUM用法总结!
oracle 分页查询语句:select * from (select u.*,rownum r from (select * from userifno) u where rownum<大值) ...
- LeetCode 922 Sort Array By Parity II 解题报告
题目要求 Given an array A of non-negative integers, half of the integers in A are odd, and half of the i ...
- java之map的基本介绍
map简介 在讲解Map排序之前,我们先来稍微了解下map.map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等.其中这四者 ...
- java 集合(五)MapDemo
package cn.sasa.demo3; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedH ...
- c语言指针应用
指针变量指向数组元素: #import <stdio.h> int main() { int a[10]={1,2,3,4,5,6,7,8,9,0}; int *p; p=a; for ( ...
- mysql 内置功能目录
mysql 内置功能 视图介绍 mysql 内置功能 视图 使用 mysql 内置功能 触发器介绍 mysql 内置功能 触发器 实验 mysql 内置功能 事务 介绍 mysql 内置功能 存储过程 ...
- 前端 HTML 标签里 特殊符号
特殊符号 浏览器在显示的时候会移除源代码中多余的空格和空行. 所有连续的空格或空行都会被算作一个空格.需要注意的是,HTML代码中的所有连续的空行(换行)也被显示为一个空格. <!DOCTYPE ...