Exceptionless

一个开源的实时的日志收集框架,它可以应用在基于 ASP.NET,ASP.NET Core,Web API,Web Forms,WPF,Console,ASP.NET MVC 等技术开发的应用程序中,并且提供了REST接口可以应用在 Javascript,Node.js 中。它将日志收集变得简单易用并且不需要了解太多的相关技术细节及配置。

ExceptionLess官网:http://exceptionless.com/

GitHub:https://github.com/exceptionless/Exceptionless

Quick Start

1 官方创建账号

2 创建项目

如果托管在http://exceptionless.com/这个上面,大于一个项目是需要收费的。

可以自己部署一套源码放到IIS上面

大家可以参考

https://www.cnblogs.com/uptothesky/p/5864863.html

3 ApiKey

4 Visual Studio 新建立一个ASP.NET MVC项目

5 Web.Config中找到exceptionless节点,apikey属性值设置为官方给你的key

Install-Package Exceptionless.Mvc 成功以后  如下代码会自动加入到web.config
<configSections>
<section name="exceptionless" type="Exceptionless.ExceptionlessSection, Exceptionless" /> 自动加入1
</configSections>
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="ProjectName" value="HelloWord"/>
</appSettings>
<exceptionless apiKey="ducXJBe0wLD1yq6IhjGJwyCNnakual1Q7lQFGi1H" /> 自动加入2 将key跟环成你自己的就行

配置完毕  看看效果如何

        /// <summary>
/// Your application description page.
/// </summary>
/// <returns></returns>
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
throw new Exception("Your application description page.");
}

F5 运行项目

然后刷新 https://be.exceptionless.io/dashboard

6 集成Logger 日志 统计

创建ExceptionLessLog类

using Exceptionless;
using Exceptionless.Logging;
using Microsoft.VisualBasic.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace HelloWord.Models
{
public class ExceptionLessLog:Log
{
/// <summary>
/// 跟踪
/// </summary>
public static void Trace(string message, params string[] tags)
{
ExceptionlessClient.Default.CreateLog(message, LogLevel.Trace).AddTags(tags).Submit();
} /// <summary>
/// 调试
/// </summary>
public static void Debug(string message, params string[] tags)
{
ExceptionlessClient.Default.CreateLog(message, LogLevel.Debug).AddTags(tags).Submit();
} /// <summary>
/// 信息
/// </summary>
public static void Info(string message, params string[] tags)
{
ExceptionlessClient.Default.CreateLog(message, LogLevel.Info).AddTags(tags).Submit();
} /// <summary>
/// 警告
/// </summary>
public static void Warn(string message, params string[] tags)
{
ExceptionlessClient.Default.CreateLog(message, LogLevel.Warn).AddTags(tags).Submit();
} /// <summary>
/// 错误
/// </summary>
public static void Error(string message, params string[] tags)
{
ExceptionlessClient.Default.CreateLog(message, LogLevel.Error).AddTags(tags).Submit();
}
}
}
    /// <summary>
/// 首页
/// </summary>
public class HomeController : Controller
{ /// <summary>
/// 用户登录了111111
/// </summary>
/// <returns></returns>
public ActionResult Index()
{
ExceptionLessLog.Info("用户登录了");
return View();
} /// <summary>
/// Your application description page.
/// </summary>
/// <returns></returns>
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
ExceptionLessLog.Debug("Your application description page.");
return View();
} /// <summary>
/// Your contact page.
/// </summary>
/// <param name="name">姓名</param>
/// <returns></returns>
public ActionResult Contact(string name)
{
ViewBag.Message = "Your contact page.";
ExceptionLessLog.Error("Your contact page.");
return View();
} }

可以看到一些项目和日志的基本信息,比如Event Type,Level以及标签Tags

7 ControllerName/actionName 注解

原理:根据swagger一样  根据xml方式获取方法注解

先右键项目

然后在web.config 加入  value="你自己创建的项目名称"

<add key="ProjectName" value="HelloWord"/>

 public class MyActionFilter : ActionFilterAttribute
{
/// <summary>
/// 方法执行后进行的操作
/// </summary>
/// <param name="filterContext"></param>
public override void OnActionExecuted(ActionExecutedContext filterContext)
{ var con = filterContext.Controller as Controller; var controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
var actionName = filterContext.ActionDescriptor.ActionName; var proejctName = ConfigurationManager.AppSettings["ProjectName"] as string;
//拿到包含注释的xml文档
var xml = XDocument.Load(con.Server.MapPath(@"~/bin/" + proejctName + ".XML"));
//拿到方法上的注释
//拿到方法上的注释没有参数的方法没有(括号
var summary = (from member in xml.Elements("doc").Elements("members").Elements("member") where member.Attribute("name").Value.ToString().Contains("." + controllerName + "Controller." + actionName + "(") select member.Element("summary").Value).FirstOrDefault() ??
(from member in xml.Elements("doc").Elements("members").Elements("member") where member.Attribute("name").Value.ToString().Contains("." + controllerName + "Controller." + actionName) select member.Element("summary").Value).FirstOrDefault(); string des = $"{controllerName}/{actionName}/{summary}";
ExceptionlessClient.Default.CreateFeatureUsage(des).AddTags(summary).Submit(); }
}

然后添加这个

    public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new MyActionFilter()); //添加此处代码
}
}

这样Exceptionless就能很直观看到了

ExceptionLess ASP.NET MVC 异常日志框架的更多相关文章

  1. ASP.NET MVC企业级项目框架

    ASP.NET MVC企业级项目框架 MVC项目搭建笔记---- 项目框架采用ASP.NET MVC+Entity Framwork+Spring.Net等技术搭建,搭建过程内容比较多,结合了抽象工厂 ...

  2. 异常日志框架Exceptionless结合.NET Core(本地部署)

    一.前言 1.分布式异常日志收集框架Exceptionless是开源的工具,根据官方给出的说明: Exceptionless可以为您的ASP.NET.Web API.WebFrm.WPF.控制台和MV ...

  3. 基于ASP.NET MVC的ABP框架入门学习教程

    为什么使用ABP 我们近几年陆续开发了一些Web应用和桌面应用,需求或简单或复杂,实现或优雅或丑陋.一个基本的事实是:我们只是积累了一些经验或提高了对,NET的熟悉程度. 随着软件开发经验的不断增加, ...

  4. ASP.NET MVC 异常Exception拦截器Fillter

    异常信息的处理在程序中非常重要, 在asp.net mvc中提供异常属性拦截器进行对异常信息的处理,异常拦截器也没有什么的,只是写一个类,继承另一个类(System.Web.Mvc.FilterAtt ...

  5. ASP.NET MVC 异常Exception拦截

    一.前言 由于客户端的环境不一致,有可能会造成我们预计不到的异常错误,所以在项目中,友好的异常信息提示,是非常重要的.在asp.net mvc中实现异常属性拦截也非常简单,只需要继承另一个类(Syst ...

  6. 分享一个点赞超过100的漂亮ASP.NET MVC蓝色界面框架

    从 陈贞宝 博客中看到一个MVC模板感觉特别漂亮就尝试着分离出来,直接拿来用啦,直接拷贝到自己的常用的代码库里收藏起来,地址是http://www.cnblogs.com/baihmpgy/p/381 ...

  7. 分享一个漂亮的ASP.NET MVC黑色界面框架

    插件应用架构概述 基于LCLFramework插件框架的应用由以下三个部分构成: (1)主程序:针对特定应用环境(Web.WinForm等应用环境),加载启动插件,获取插件入口,运行入口程序. (2) ...

  8. asp.net mvc 简单项目框架的搭建过程(一)对Bll层和Dal层进行充分解耦

    学习asp.net 已经有近三个月的时间了,在asp.net mvc上花的时间最多,但个人真是有些菜,不得不说,asp.net mvc的水真的还是蛮深的.目前在公司实习,也见过公司几个项目的代码了.对 ...

  9. C# 在WPF中使用Exceptionless异常日志框架

    登录http://exceptionless.com/官网,注册一个账户. 创建项目 选择wpf项目类型 拷贝下箭头指的这个密钥,过后程序里用的到. 下面我们打开vs,新建一个wpf的项目 打开git ...

随机推荐

  1. 121. Best Time to Buy and Sell Stock (Array;DP)

    Say you have an array for which the ith element is the price of a given stock on day i. If you were ...

  2. Spring整合Struts2框架的第二种方式(Action由Spring框架来创建)(推荐大家来使用的)

    1. spring整合struts的基本操作见我的博文:https://www.cnblogs.com/wyhluckdog/p/10140588.html,这里面将spring与struts2框架整 ...

  3. ecplice中代码使用快捷键无法格式化,使用其他方法将代码格式化的步骤

    选中需要进行格式化的代码--->右键--->source--->format,就可以将代码格式化了.

  4. AspectJ的XML方式完成AOP的开发之切入点的表达式

    1. 再配置切入点的时候,需要定义表达式,重点的格式如下:execution(public * *(..)),具体展开如下: * 切入点表达式的格式如下: * execution([修饰符] 返回值类 ...

  5. Golang之时间格式化,计时器

    地鼠敲下一堆代码,记录着当天的时间 package main import ( "fmt" "time" ) func getTime() { now := t ...

  6. Golang之Mysql事务

    Mysql事务 )原子性 )一致性 )隔离性 )持久性 示例代码 package main import ( "fmt" _ "github.com/go-sql-dri ...

  7. PAT 1074 宇宙无敌加法器(20)(代码+思路+测试点分析)

    1074 宇宙无敌加法器(20 分)提问 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为"P ...

  8. PAT 1082 射击比赛(20)(代码+思路)

    1082 射击比赛(20 分) 本题目给出的射击比赛的规则非常简单,谁打的弹洞距离靶心最近,谁就是冠军:谁差得最远,谁就是菜鸟.本题给出一系列弹洞的平面坐标(x,y),请你编写程序找出冠军和菜鸟.我们 ...

  9. 谈谈我对Ui设计师的一些观点

    做ui设计师3年多了,对ui设计师在工作中也了解了许多. 作为UI设计师,在工作中需要清楚了解设计的目的,尤其是你做的不是大众化产品,不能以个人认知.很强的主题性来确定. 例如针对儿童人群的app时, ...

  10. MySQL 开启远程访问权限

    1.登陆mysql数据库    mysql -u root -p 查看user表 mysql> use mysql;Database changedmysql> select host,u ...