ExceptionLess ASP.NET MVC 异常日志框架
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 异常日志框架的更多相关文章
- ASP.NET MVC企业级项目框架
ASP.NET MVC企业级项目框架 MVC项目搭建笔记---- 项目框架采用ASP.NET MVC+Entity Framwork+Spring.Net等技术搭建,搭建过程内容比较多,结合了抽象工厂 ...
- 异常日志框架Exceptionless结合.NET Core(本地部署)
一.前言 1.分布式异常日志收集框架Exceptionless是开源的工具,根据官方给出的说明: Exceptionless可以为您的ASP.NET.Web API.WebFrm.WPF.控制台和MV ...
- 基于ASP.NET MVC的ABP框架入门学习教程
为什么使用ABP 我们近几年陆续开发了一些Web应用和桌面应用,需求或简单或复杂,实现或优雅或丑陋.一个基本的事实是:我们只是积累了一些经验或提高了对,NET的熟悉程度. 随着软件开发经验的不断增加, ...
- ASP.NET MVC 异常Exception拦截器Fillter
异常信息的处理在程序中非常重要, 在asp.net mvc中提供异常属性拦截器进行对异常信息的处理,异常拦截器也没有什么的,只是写一个类,继承另一个类(System.Web.Mvc.FilterAtt ...
- ASP.NET MVC 异常Exception拦截
一.前言 由于客户端的环境不一致,有可能会造成我们预计不到的异常错误,所以在项目中,友好的异常信息提示,是非常重要的.在asp.net mvc中实现异常属性拦截也非常简单,只需要继承另一个类(Syst ...
- 分享一个点赞超过100的漂亮ASP.NET MVC蓝色界面框架
从 陈贞宝 博客中看到一个MVC模板感觉特别漂亮就尝试着分离出来,直接拿来用啦,直接拷贝到自己的常用的代码库里收藏起来,地址是http://www.cnblogs.com/baihmpgy/p/381 ...
- 分享一个漂亮的ASP.NET MVC黑色界面框架
插件应用架构概述 基于LCLFramework插件框架的应用由以下三个部分构成: (1)主程序:针对特定应用环境(Web.WinForm等应用环境),加载启动插件,获取插件入口,运行入口程序. (2) ...
- asp.net mvc 简单项目框架的搭建过程(一)对Bll层和Dal层进行充分解耦
学习asp.net 已经有近三个月的时间了,在asp.net mvc上花的时间最多,但个人真是有些菜,不得不说,asp.net mvc的水真的还是蛮深的.目前在公司实习,也见过公司几个项目的代码了.对 ...
- C# 在WPF中使用Exceptionless异常日志框架
登录http://exceptionless.com/官网,注册一个账户. 创建项目 选择wpf项目类型 拷贝下箭头指的这个密钥,过后程序里用的到. 下面我们打开vs,新建一个wpf的项目 打开git ...
随机推荐
- #define宏常量和const常量的区别
C++ 语言可以用const 来定义常量,也可以用#define 来定义常量.但是前者比后者有更多的优点:(1) const 常量有数据类型,而宏常量没有数据类型.编译器可以对前者进行类型安全检查.而 ...
- 动态调用WebService方法
好像很多人做WebService的时候都是直接添加引用的方式,然后调用服务端的方法.这样就个问题,就是每次我服务端添加了方法或者修改了方法后都要更新Web引用,这样比较麻烦.下面给一个不用添加引用 ...
- 排序矩阵中的从小到大第k个数 · Kth Smallest Number In Sorted Matrix
[抄题]: 在一个排序矩阵中找从小到大的第 k 个整数. 排序矩阵的定义为:每一行递增,每一列也递增. [思维问题]: 不知道应该怎么加,因为不是一维单调的. [一句话思路]: 周围两个数给x或y挪一 ...
- Golang之waitgroup用法
我敲下一堆代码,终于长出了果实,今天是个伟大日子 package main import ( "fmt" "sync" "time" ) / ...
- div+css隐藏内容样式方法
div css隐藏内容样式方法 div+css隐藏内容方法 一般情况下,css隐藏的用途,如下: 1.对文本的隐藏 2.隐藏超链接(另类黑链) 3.对统计代码隐藏 4.隐藏超出图片 5.css ...
- 客户关系管理系统CRM
http://www.cnblogs.com/Michael2397/tag/SSH%E9%A1%B9%E7%9B%AE-CRM/ 客户关系管理系统
- 201621123008《Java程序设计》第七周学习总结
1. 本周学习总结 1.1 思维导图:Java图形界面总结 2.书面作业 1. GUI中的事件处理 1.1 写出事件处理模型中最重要的几个关键词. 监听,事件源,事件,注册. 1.2 任意编写事件处理 ...
- css之颜色篇
app多采用浅灰#f5f5f5 白色一般用white,如果觉得白太直接了,可以加一点点灰,#fefefe, 这种情况下搭配#e4e4e4的浅灰边框最合适.
- sqlldr 笔记
表结构 CREATE table sqlloader_test ( f1 char(20), f2 char(20), f3 number(16), f4 date ); 数据文件data.csv 1 ...
- 打开jsp页面时,显示空白页。
打开jsp页面时,显示空白页. #foreach($e in $listPlanItem) #set($listPlanDetail=$!e.get(2)) < ...