前言

公司目前使用的项目中关于日志记录这块,之前一直都是使用的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里可以这样写

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

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

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

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

  1. // GET api/values/5
  2. [HttpGet("{id}")]
  3. public ActionResult<string> Get(int id)
  4. {
  5. try
  6. {
  7. throw new Exception("异常");
  8. return "value";
  9. }
  10. catch (Exception ex)
  11. {
  12. ex.ToExceptionless().Submit();
  13. }
  14. return "value";
  15. }

当然,这些例子都很简单,其实最重要的就是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实现 LeetCode 229 求众数 II(二)

    229. 求众数 II 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1). 示例 1: 输入: [3,2, ...

  2. Java实现 洛谷 P1426 小鱼会有危险吗

    import java.util.LinkedList; import java.util.Scanner; public class Main { private static Scanner ci ...

  3. java实现第四届蓝桥杯核桃的数量

    核桃的数量 题目描述 小张是软件项目经理,他带领3个开发组.工期紧,今天都在加班呢.为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑).他的要求是: 各组的核桃数量必须相同 各组内必须能平分核桃( ...

  4. Python 爬虫之request+beautifulsoup+mysql

    一.什么是爬虫?它是指向网站发起请求,获取资源后分析并提取有用数据的程序:爬虫的步骤: 1.发起请求使用http库向目标站点发起请求,即发送一个RequestRequest包含:请求头.请求体等 2. ...

  5. Spring Cloud 系列之 Apollo 配置中心(四)

    本篇文章为系列文章,未读前几集的同学请猛戳这里: Spring Cloud 系列之 Apollo 配置中心(一) Spring Cloud 系列之 Apollo 配置中心(二) Spring Clou ...

  6. 初学python笔记

    一.关于python ① 由荷兰人Guido van Rossum(龟叔)于1989年圣诞节为打发无聊时间所编写的编程语言. ② python的特点:优雅 明确 简单.代码量少,运行速度快. 缺点:运 ...

  7. Windows内核驱动开发:HelloWorld

    测试信息 Dev Machine: Windows Version: 2004 (19041.264) WDK Version: 10.0.19041.1 SDK Version: 10.0.1904 ...

  8. vue无法选择上传相同文件

    使用h5自带的input type=file时,使用change触发上传事件 <input class="exportss" type="file" id ...

  9. 3、react-props/state

    1.react中属性props和状态state 属性--静态得,所以在初始化得时候使用得是static进行初始化得,正常情况下属性不改 状态--动态得,它得值是可以发生改变得,react中的组件更新( ...

  10. 时间序列神器之争:prophet VS lstm

    一.需求背景 我们福禄网络致力于为广大用户提供智能化充值服务,包括各类通信充值卡(比如移动.联通.电信的话费及流量充值).游戏类充值卡(比如王者荣耀.吃鸡类点券.AppleStore充值.Q币.斗鱼币 ...