ExceptionLess的安装、配置、使用教程

目录
  • 前言
  • 安装
  • 邮件配置
  • AspNetCore集成
  • 提交错误信息
  • 集成日志框架
  • 其他语言能用吗?
  • 参考资料

前言

Exceptionless 是一个开源的实时的日志收集框架,它可以应用在基于 ASP.NET,ASP.NET Core,Web API,Web Forms,WPF,Console,ASP.NET MVC 等技术开发的应用程序中,并且提供了REST接口可以应用在 Javascript,Node.js 中。(基本就是.Net技术栈的一套东西)

项目地址:https://github.com/exceptionless/Exceptionless

它将日志收集变得简单易用并且不需要了解太多的相关技术细节及配置,对于微服务架构的应用程序来说,统一的日志收集系统的建立更是有必要。

要使用的话只需要在其官网上注册个账号,然后在代码中配置一下APIKey就可以了,不过免费版额度有限,当然还是自己部署一套比较好,这次依然使用docker部署

安装

docker部署可以在GitHub下载代码自己构建,也可以用官方打包好的镜像,为了方便这里我直接使用官方打包的镜像

docker-compose.yml 内容如下

可以看到其中包含5个容器:ExceptionLess App、ExceptionLess Job、elasticsearch、kibana、Redis

version: '3.7'

services:
  app:
    depends_on:
      - elasticsearch
      - redis
    image: exceptionless/app:latest
    environment:
      EX_AppMode: Production
      EX_ConnectionStrings__Cache: provider=redis
      EX_ConnectionStrings__Elasticsearch: server=http://elasticsearch:9200
      EX_ConnectionStrings__MessageBus: provider=redis
      #EX_ConnectionStrings__Metrics: provider=statsd;server=statsd;
      EX_ConnectionStrings__Queue: provider=redis
      EX_ConnectionStrings__Redis: server=redis,abortConnect=false
      EX_ConnectionStrings__Storage: provider=folder;path=/app/storage
      # 官方配置默认包含HTTPS,我把它关了
      #ASPNETCORE_URLS: http://+;https://+
      ASPNETCORE_URLS: http://+
      # 关了HTTPS,这个端口也不用配置了
      #ASPNETCORE_HTTPS_PORT: 5001
      # 关了HTTPS,证书也不用配置
      #ASPNETCORE_Kestrel__Certificates__Default__Password: password
      #ASPNETCORE_Kestrel__Certificates__Default__Path: /https/aspnetapp.pfx
      EX_RunJobsInProcess: 'false'
    ports:
      - 5000:80
      # 关了HTTPS,不需要映射443端口
      #- 5001:443
    volumes:
      - ex_appdata:/app/storage
      - ex_ssldata:/https

  jobs:
    depends_on:
      - app
    image: exceptionless/job:latest
    environment:
      EX_AppMode: Production
      # UI地址,修改这里的IP地址为你的服务器IP地址
      EX_BaseURL: http://你的IP:5000
      EX_ConnectionStrings__Cache: provider=redis
      EX_ConnectionStrings__Elasticsearch: server=http://elasticsearch:9200
      # 邮件配置
      EX_ConnectionStrings__Email: smtps://邮箱地址:密码@SMTP服务器:端口
      EX_SmtpFrom: 发件邮箱地址
      EX_ConnectionStrings__MessageBus: provider=redis
      #EX_ConnectionStrings__Metrics: provider=statsd;server=statsd;
      EX_ConnectionStrings__Queue: provider=redis
      EX_ConnectionStrings__Redis: server=redis,abortConnect=false
      EX_ConnectionStrings__Storage: provider=folder;path=/app/storage
    volumes:
      - ex_appdata:/app/storage

  elasticsearch:
    image: exceptionless/elasticsearch:7.15.2
    environment:
      discovery.type: single-node
      xpack.security.enabled: 'false'
      ES_JAVA_OPTS: -Xms1g -Xmx1g
    ports:
      - 9200:9200
      - 9300:9300
    volumes:
      - ex_esdata:/usr/share/elasticsearch/data

  kibana:
    depends_on:
      - elasticsearch
    image: docker.elastic.co/kibana/kibana:7.15.2
    ports:
      - 5601:5601

  redis:
    image: redis:6.0-alpine
    ports:
      - 6379:6379

volumes:
  ex_esdata:
    driver: local
  ex_appdata:
    driver: local
  ex_ssldata:
    driver: local

邮件配置

邮件配置是比较麻烦的地方,我查了一些资料才解决

jobs容器中的这两个环境变量里配置

EX_ConnectionStrings__Email: smtps://邮箱地址:密码@SMTP服务器:端口
EX_SmtpFrom: 发件邮箱地址

有坑的地方就是EX_ConnectionStrings__Email变量的邮箱地址需要对@符号进行转义,用%40代替@符号

以我的自建邮箱为例,邮箱地址是:test@dealiaxy.com,那么配置就是这样

EX_ConnectionStrings__Email: smtps://test%40dealiaxy.com:密码@SMTP服务器:端口
EX_SmtpFrom: test@dealiaxy.com

这样配置完成就可以正常发邮件了~

PS:还可以配置Webhook实现报错自动推送到微信、钉钉之类的平台,不细说了

AspNetCore集成

我主要使用的.Net技术栈是AspNetCore,其他项目可以参考官方文档的集成教程

首先在ExceptionLess中创建一个项目,把APIKey复制下来

编辑AspNetCore项目的appsettings.json文件,增加配置

"Exceptionless": {
    "ServerUrl": "http://12.0.0.1:5000",
    "ApiKey": "Rajo99MksQTS6zZK81238jTkNHNOQP33A3iW45JC"
}

然后编辑Program.cs,添加服务和中间件

builder.Services.AddExceptionless(builder.Configuration);
app.UseExceptionless();

集成这一步就搞定了

记录事件

Exceptionless中的事件有以下几种类型:

  • 日志消息:记录的日志,可以是任何文本内容
  • 特性使用:功能使用量的记录,例如接口调用情况等
  • 异常情况:记录异常的信息
  • 失效链接:当被访问的页面不存在时进行记录

除此之外,每个事件还可以附加tags、object、UserIdentity、Description之类的信息,有这些信息的辅助可以方便后续排查问题。

最简单的使用

ExceptionlessClient.Default.CreateLog("message").Submit();

CreateLog方法会放回一个EventBuilder类型的对象,之后在这个对象上进行大部分操作支持链式调用

可以像上面那样一行代码链式调用,也可以这样

// 先创建
var eventBuilder = ExceptionlessClient.Default.CreateLog("message");
// 再来慢慢添加
eventBuilder.AddObject(...);
eventBuilder.AddTags(...);
// 最后提交
eventBuilder.Submit();

可以附加到事件中的信息有很多,下面是官网提供的一些例子

// Set the reference id of the event so we can search for it later (reference:id).
// This will automatically be populated if you call ExceptionlessClient.Default.Configuration.UseReferenceIds();
.SetReferenceId(Guid.NewGuid().ToString("N"))
// Add the order object but exclude the credit number property.
.AddObject(order, "Order", excludedPropertyNames: new [] { "CreditCardNumber" }, maxDepth: 2)
// Set the quote number.
.SetProperty("Quote", 123)
// Add an order tag.
.AddTags("Order")
// Mark critical.
.MarkAsCritical()
// Set the coordinates of the end user.
.SetGeo(43.595089, -88.444602)
// Set the user id that is in our system and provide a friendly name.
.SetUserIdentity(user.Id, user.FullName)
// Set the users description of the error.
.SetUserDescription(user.EmailAddress, "I tried creating an order from my saved quote.")

例如,使用SetUserIdentity设置了用户信息,在异常列表就可以看到用户名,如图

AddTags添加标签,在页面中以badge的形式显示

还有AddObject,很方便,可以直接把对象传进去,由于C#语言有匿名对象,那就更方便了,在页面上的“扩展数据”标签页上可以看到,ExceptionLess会把对象处理成表格形式,更加直观

提交错误信息

ExceptionLess提供了Exception对象的扩展方法

可以catch到错误后直接Submit

try {}
catch (Exception ex) {
    ex.ToExceptionless().Submit();
}

当然也可以附加一些信息进去

ex.ToExceptionless().AddObject(...).Submit();

集成日志框架

除了手动提交事件,它还提供了与现有日志框架集成的方法

安装对应的nuget包就行(简单搜了一下,至少对Log4net和NLog的支持应该是没啥问题的)

以与Log4net集成为例,首先安装nuget包:Exceptionless.Log4net

附上一个简单的Log4net配置

<log4net>
<appender name="exceptionless" type="Exceptionless.Log4net.ExceptionlessAppender,Exceptionless.Log4net">
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%-4timestamp [%thread] %-5level %logger %ndc - %message%newline"/>
  </layout>
</appender>

<root>
  <level value="DEBUG"/>
  <appender-ref ref="exceptionless"/>
</root>
</log4net>

其他语言能用吗?

虽然官方只支持.Net平台和前端(js调用、vue3),不过ExceptionLess提供了大量的HTTP接口,想要在其他语言的项目中使用,只需要调用对应的接口就行了,甚至可以自己封装一个

不过在其他语言的项目中,我推荐使用Sentry(下一篇文章要介绍的),支持的语言/框架更多,ExceptionLess的优势在于和AspNetCore这类.Net平台的结合更好,结果页面更直观~

话说回来,ExceptionLess的接口文档(Swagger)在/docs/index.html,根据部署地址访问就能看到,里面你要的功能基本都有。

参考资料

官方 Self Hosting Wiki:https://github.com/exceptionless/Exceptionless/wiki/Self-Hosting

.NET Core微服务之基于Exceptionless实现分布式日志记录:https://www.cnblogs.com/edisonchou/p/exceptionless_foundation_and_quick_start.html

开源日志框架Exceptionless使用教程:https://www.cnblogs.com/youring2/p/11546485.html

Exceptionless 5.x 无法正常发送邮件的问题解决 :https://www.cnblogs.com/edisonchou/p/solve_the_problem_of_exceptionless_on_cannot_send_emails.html

到此这篇关于ExceptionLess的安装、配置、使用教程的文章就介绍到这了,更多相关ExceptionLess安装使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C# 中使用 Exceptionless的方法

    背景 "Exceptionless"一词的定义是:无例外.Exceptionless可为您的JavaScript,Node,.NET Core,ASP.NET,Web API,WebForms,WPF,控制台和MVC应用程序提供实时错误报告.它将收集到的信息组织成简单的可操作数据,这些数据将帮助您的应用程序变得异常异常! Exceptionless专注于实时可配置性,这使其与其他错误监视服务区分开来.如果其他人可能需要更改代码中的配置并重新部署应用程序,则Exceptionless允许

  • .Net Core项目中NLog整合Exceptionless实例

    目录 前言 概念 Exceptionless NLog 环境搭建 Exceptionless搭建 集成NLog 简单测试一下 总结 前言 在实际的.Net Core相关项目开发中,很多人都会把NLog作为日志框架的首选,主要是源于它的强大和它的扩展性.同时很多时候我们需要集中式的采集日志,这时候仅仅使用NLog是不够的,NLog主要是负责代码中日志的落地,也就是收集程序中的日志.类似的使用ELK(Elasticsearch+Logstash+Kibana)或EFK(Elasticsearch+F

  • Mysql 5.7.17 winx64免安装版,win10环境下安装配置图文教程

    下载地址:http://dev.mysql.com/downloads/file/?id=467269 1.解压到自定义目录:我解压到了D盘的根目录 2.添加一个my.ini文件 配置如下: # 设置mysql客户端默认字符集 default-character-set=utf8 #安装目录 basedir = D:\mysql-5.7.17-winx64 #数据存放目录 data目录是要单独创建的,记得是个空文件夹 datadir =D:\mysql-5.7.17-winx64\data #端

  • python虚拟环境的安装配置图文教程

    使用pip安装     pip install virtualenv 因为已经安装过了,所以显示这样 在这里我想在这里推荐大家以后再安装类库时可以用豆瓣源来安装,速度很快,因为在国内访问 官方pypi源非常慢,pip安装包经常会出错 豆瓣源 我来演示下django的安装 可以看到速度很快 好了回到虚拟环境的安装 virtualenv scrapytest(环境名) 安装好后输入activate.bat进入虚拟环境后输入python查看当前python版本为2.7 退出 退出虚拟环境:输入deac

  • Ubuntu14.04 安装配置Tomcat7教程

    1.下载安装包: http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.75/bin/apache-tomcat-7.0.75.tar.gz 2.解压 sudo tar zxcf apache-tomcat-7.0.75.tar.gz 得到apache-tomcat-7.0.75.tar.gz文件夹 3.改个名字 sudo mv apache-tomcat-7.0.75.tar.gz tomcat 4.放入/usr/loc

  • Mysql5.7.17 winx64.zip解压缩版安装配置图文教程

    1.下载mysql-5.7.17-winx64.zip : 链接: https://pan.baidu.com/s/1tTqT2sn7cEaOwEvrQ-LrHg 密码: i444 2.解压到文件夹(例): 解压到当前文件夹 3.修改配置文件: 打开解压的文件夹(本例的配置文件位置 D:\Development\mysql\mysql-5.7.17-winx64\mysql-5.7.17-winx64\),删除my-default.ini,新建一个my.ini 修改my.ini内容如下: [my

  • Ubuntu Server 16.04下mysql8.0安装配置图文教程

    Ubuntu Server 16.04下mysql8.0安装配置图文教程 1.从Mysql官网上下载安装文件.有两种方式可供选择: 使用APT安装方式安装 使用完整的安装包进行安装 sudo dpkg -i mysql-apt-config_0.8.6-1_all.deb 2.更新系统安装源 sudo apt-get update 3.安装Mysql服务 sudo apt-get install mysql-server 4.修改Mysql Server的字符集 要修改字符集,首先得找到Mysq

  • Ubuntu 18.04下VMware Tools安装配置图文教程

    本文记录了Ubuntu 18.04下VMware Tools安装配置图文教程,供大家参考,具体内容如下 1.打开虚拟机VMware Workstation,启动Ubuntu系统,菜单栏 - 虚拟机 - 安装VMware Tools,不启动Ubuntu系统是无法点击"安装VMware Tools"选项的,如下图: 2.等待几分钟会发现ubuntu桌面多了VMware Tools镜像,点击它,其里面有一个VMwareTools-tar.gz文件 3.接下来我们把VMwareTools-ta

  • Ubuntu16.04 64位下VMware Tools安装配置图文教程

    本文为大家分享了VMware Tools安装配置图文教程,供大家参考,具体内容如下 因为在虚拟机下安装Ubuntu16.04 64位时无法进入全屏模式,采用另外一种方法解决了,但是还是想安装一下VMware Tools,防止以后出现相关问题,好啦,下面进入正题. 1.在虚拟机下会看到安装 VMware Tools,单击安装. 2.在虚拟机设备下出现VMware Tools这一项,点击打开,里面有一个VMwareTools-10.1.6-5214329.tar.gz 3.将这个文件复制到某个目录下

  • Windows下maven安装配置图文教程(包括本地化仓库配置)

    一.下载maven maven官网:http://maven.apache.org/ 下载下来也就是一个压缩文件,解压.我下载的是3.5.2版本,解压之后如下: 路径为 :D:\Program Files\apache-maven-3.5.2 二.配置环境变量 添加自定义变量 :MAVEN_HOME 值为刚才的解压路径:D:\Program Files\apache-maven-3.5.2. MAVEN_OPTS = -Xms128m -Xmx512m (可选) 在path变量末尾加入 ";%M

  • mysql 8.0.16 Win10 zip版本安装配置图文教程

    本文为大家分享了mysql 8.0.16  Win10 zip版本安装配置图文教程,供大家参考,具体内容如下 首先去mysql官网下载mysql最新版本 1.选择如图所示 community 2.点击图示 download 3.解压到指定盘中 例:F:\mysql8.0.16 4.配置环境变量 MYSQL_HOME:F:\mysql8.0.16` 在path 后面添加 ;%MYSQL_HOME%\bin 5.添加文件my.ini文件 6.将如下代码放入my.ini文件中 mysql] # 设置m

  • Git初次使用时的安装配置图文教程

    1.本地电脑没有关联过Git,打开git bush输入$ ssh-keygen -t rsa -C "724277441@qq.com(自己GitHub的邮箱)",创建SSH Key. 2.在我的电脑C盘里面找到.ssh文件夹.打开公钥id_rsa.pub文件,复制里面的内容. 3.进入GItHub - setting - SSH 4.关联仓库 git remote add origin (仓库地址) 5.按照正常步骤 由于远程库是空的,我们第一次推送master分支时,加上了 -u

随机推荐