前言

公司目前使用的项目中关于日志记录这块,之前一直都是使用的Log4net 存放于后台文件中的,对于异常错误啊,或者需要查看一些详情错误的时候感觉很不方便,要到服务器上去打开日志文件检索错误,降低了解决问题的速度,所以针对日志这块的优化就提上日程了。考虑了好久决定采用ExceptionLess日志框架来处理和收集系统日志。在实际操作中我也遇到了很多坑,现在将ExceptionLess分布式日志框架在Windows上的本地化部署做个记录。

一.安装ExceptionLess

GitHub上有关于ExceptionLess的详细介绍,我们的准备工作主要有以下几点:

.net4.7

IIS 7.5+

PowerShell 3+

Java JDK 1.8+

由于本地环境和生成环境使用的都是Windows,所以针对Exceptionless的部署就重点在如何部署在Windows上的问题了,网上也有很多相关文档是直接部署在Linux的,但这不是我们本文的重点。

关于Java环境的配置可以参考下面文章Java安装与环境配置文章写的很详细,跟着配置下来是不会有太大问题的。

接着,我们来下载ExceptionLess的最新版本,GitHub上最新的版本是ExceptionLess4.1.2861

下载完后解压文件,可以看到如下几个文件

其中Start.bat用于快速启动的批处理文件,其实就是执行ElasticSearch和WebSite.ps1这两个文件,它会帮我们安装运行ElasticSearch和Kibana.

在这一步安装的过程中问题最多,也是最难解决的,真的是折腾了好久。

1.Q:执行Start.bat 显示 请求被中止:未能建立SSL/TLS安全通道.

A:在ElasticSearch.ps1文件中,命令执行前加上如下一行命令:

2.紧接着,再次启动Start.bat,可以看到终于正常下载并写入web流了,这个过程好像也很漫长,我记得当时晚上走的时候电脑没关,就一直让它下载了。这个好像也和本身自己的网络有关系。

等待下载中,刚刚的文件里就会多了几个文件夹.

ExceptionLess默认的端口是50000,如果执行正常,在浏览器里输入localhost:50000,会显示登录页面,

但是我第一次显示的却是个an error occurred trying to red the response from the specified node.

查阅相关资料后,得知是每次访问时,需要先 启动ElasticSearch服务,这里,我直接将ElasticSearch服务注册到了Windows上,每次开机自动启动该服务,省去了每次执行Start.bat 然后一次打开4个dos窗口的麻烦。

ElasticSearch注册服务,在node1的bin目录下执行cmd打开命令窗口

执行elasticsearch-sevice.bat install 去安装服务. 执行elsticsearch-service.bat start 去开启服务

后续我们直接在服务里将该服务的启动方式设为自动,即可完成注册.

接着我们将ExceptionLess部署到IIS上,新建一个网站,目录为wwwroot.端口号默认为50000,如果你需要修改端口号,

记得在app.config.xxxx.js 修改BASE_URL ;

在 web.config 的修改端口号.

Start-Website.ps1文件的最后两行的端口号,也需要修改.

经过这一番折腾,我们终于可以访问本地的Exceptionless了。

二.ExceptionLess在.net Core 项目下的配置

由于我们使用的项目环境为.net core ,所以我们在Exceptionless里新建一个组织,名称随便,接着新建一个项目,项目框架选择 Exceptionless.AspNetCore

使用的方法也很简单,直接在项目的startup.cs 里使用 app.UseExceptionless(“XXXXXAPI密钥”).

这里,我将ExceptionLess的一些配置放在了appsettings.json里于是我们在startup.cs里可以这样写

  var isEnableLogger = Convert.ToBoolean(_appConfiguration["Exceptionless:Enabled"] ?? "false");
if (isEnableLogger)
{
// 封装使用Exceptionless分布式日志组件
ExceptionlessClient.Default.Configuration.ApiKey = _appConfiguration["Exceptionless:ApiKey"];
ExceptionlessClient.Default.Configuration.ServerUrl = _appConfiguration["Exceptionless:ServerUrl"];
app.UseExceptionless();
}

接着我们可以尝试手动抛一个异常出来,看看ExceptionLess是否能捕获到.

   public ActionResult<IEnumerable<string>> Get()
{
throw new Exception($"看这里异常了!时间:{DateTime.Now}");
return new string[] { "value1", "value2" };
}

可以看到我们的ExceptionLess成功捕获到了异常,当然我们也可以手动提交一个异常信息到ExceptionLess上去,具体的写法就是:

   // GET api/values/5
[HttpGet("{id}")]
public ActionResult<string> Get(int id)
{
try
{ throw new Exception("异常");
return "value";
}
catch (Exception ex)
{
ex.ToExceptionless().Submit();
}
return "value";
}

当然,这些例子都很简单,其实最重要的就是Exceptionless的安装过程,实在是遇到了很多让人头大的问题,不过好在这些问题最后都解决了。

目前ExceptionLess日志框架只在本地的测试环境里安装部署了,网上有小伙伴说到的生成环境下的时区问题,由于暂时还没部署到生成环境,这个问题也就暂时还没遇到,等真正遇到的时候再来详细研究如何解决处理吧。

三.结束语

参考文献:

本文在编辑过程中参考以下文章的部分内容和资料,在此表示感谢。

依乐祝,《Exceptionless安装配置及简单实用

markjiang7m2 ,《Exceptionless - .Net Core开源日志框架

markjiang7m2 ,《Exceptionless(二) - 本地部署使用进阶

Java环境变量配置《Java环境变量配置

再次对以上作者表示感谢.

对于Exceptionless的使用,我也是仅仅开始入门,ExceptionLess的一些其他强大的功能还等着我们去进一步挖掘和深入研究的.希望本文给其他的小伙伴一些帮助,欢迎大家来一起探讨交流,我是程序猿贝塔.

.Net Core 集成ExceptionLess分布式日志框架之本地化部署的更多相关文章

  1. Net Core集成Exceptionless分布式日志功能以及全局异常过滤

    Net Core集成Exceptionless分布式日志功能以及全局异常过滤 相信很多朋友都看过我的上篇关于Exceptionless的简单入门教程[asp.Net Core免费开源分布式异常日志收集 ...

  2. 分布式日志框架Exceptionless之生产环境部署步骤

    Exceptionless 是一个开源的实时的日志收集框架,它将日志收集变得简单易用并且不需要了解太多的相关技术细节及配置.本篇基于我的上一篇<基于Exceptionless实现分布式日志> ...

  3. .NET开源分布式日志框架ExceptionLess实战演练(公开版)

    一.课程介绍 在以前,我们做日志收集大多使用 Log4net,Nlog 等框架,在应用程序变得复杂并且集群的时候,可能传统的方式已经不是很好的适用了,因为收集各个日志并且分析他们将变得麻烦而且浪费时间 ...

  4. asp.net core集成CAP(分布式事务总线)

    一.前言 感谢杨晓东大佬为社区贡献的CAP开源项目,传送门在此:.NET Core 事件总线,分布式事务解决方案:CAP 以及 如何在你的项目中集成 CAP[手把手视频教程],之前也在工作中遇到分布式 ...

  5. SpringBoot接入轻量级分布式日志框架(GrayLog)

    我是3y,一年CRUD经验用十年的markdown程序员‍常年被誉为优质八股文选手 前两天我不是发了一篇数据链路追踪的文章嘛,在末尾也遗留了TODO:运行应用的服务器一般是集群,日志数据会记录到不同的 ...

  6. 在.NET Core中使用Exceptionless分布式日志收集框架

    一.Exceptionless简介 Exceptionless 是一个开源的实时的日志收集框架,它可以应用在基于 ASP.NET,ASP.NET Core,Web Api,Web Forms,WPF, ...

  7. 分布式日志框架之ExceptionLess【二】:自行搭建帮助文档【译文】

    原文地址:https://github.com/exceptionless/Exceptionless/wiki/Self-Hosting ExceptionLess自行托管环境搭建 一.测试环境 如 ...

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

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

  9. .NetCore下 Exceptionless 分布式日志的个性化处理

    Event Type 在Exceptionless中有 Exception .LogMessage.Broken Links .Feature Usages 接下来就这几种类型分别添加日志记录 Exc ...

随机推荐

  1. Java 蓝桥杯 算法训练(VIP) 最大体积

    最大体积 问题描述 每个物品有一定的体积(废话),不同的物品组合,装入背包会战用一定的总体积. 假如每个物品有无限件可用,那么有些体积是永远也装不出来的. 为了尽量装满背包,附中的OIER想要研究一下 ...

  2. Java 第十一届 蓝桥杯 省模拟赛 正整数的摆动序列

    正整数的摆动序列 问题描述 如果一个序列的奇数项都比前一项大,偶数项都比前一项小,则称为一个摆动序列.即 a[2i]<a[2i-1], a[2i+1]>a[2i]. 小明想知道,长度为 m ...

  3. (Java实现) 装载问题

    2.装载问题 [问题描述] 有一批共n个集装箱要装上艘载重量为c的轮船,其中集装箱i的重量为wi.找出一种最优装载方案,将轮船尽可能装满,即在装载体积不受限制的情况下,将尽可能重的集装箱装上轮船. [ ...

  4. (Java实现) 洛谷 P1781 宇宙总统

    题目背景 宇宙总统竞选 题目描述 地球历公元6036年,全宇宙准备竞选一个最贤能的人当总统,共有n个非凡拔尖的人竞选总统,现在票数已经统计完毕,请你算出谁能够当上总统. 输入输出格式 输入格式: pr ...

  5. Java实现 蓝桥杯算法提高 求最大值

    算法提高 求最大值 时间限制:1.0s 内存限制:256.0MB 问题描述 给n个有序整数对ai bi,你需要选择一些整数对 使得所有你选定的数的ai+bi的和最大.并且要求你选定的数对的ai之和非负 ...

  6. Java实现洛谷 P1873 砍树(StreamTokenizer+IO+二分)

    P1873 砍树 输入输出样例 输入 5 20 4 42 40 26 46 输出 36 PS: get新知识,以前只知道STringTokenizer并没有了解过StreamTokenizer,这次才 ...

  7. java实现第四届蓝桥杯连续奇数和

    连续奇数和 题目描述 小明看到一本书上写着:任何数字的立方都可以表示为连续奇数的和. 比如: 2^3 = 8 = 3 + 5 3^3 = 27 = 7 + 9 + 11 4^3 = 64 = 1 + ...

  8. python—列表,元组,字典

    ——列表:(中括号括起来:逗号分隔每个元素:列表中的元素可以是数字,字符串,列表,布尔值等等) (列表元素可以被修改)  list(类)    (有序的) [1]索引取值:切片取值:for循环:whi ...

  9. windows server2012在已有.net4.5框架的基础上安装.net3.5的方法

    我们在一台服务器运行各种程序的时候难免会用到一些好用的但是很老的软件.老软件也就难免需要以前的那种环境来运行,但是老的环境与新的环境往往不兼容.下面我就来讲一讲系统在已有.net4.5的情况下怎么安装 ...

  10. 使用百度地图时,Application类的onCreate执行两次的解决方案

    应用做的匆忙,很多地方只顾实现功能,没有兼顾好性能,所以停下来重构代码优化性能,结果在打log看启动时间的时候,发现Application的onCreate执行了多次,这样导致重复初始化资源,初始化了 ...