.Net Core 集成ExceptionLess分布式日志框架之本地化部署

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

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

.Net Core 集成ExceptionLess分布式日志框架之本地化部署

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

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

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

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

.Net Core 集成ExceptionLess分布式日志框架之本地化部署

.Net Core 集成ExceptionLess分布式日志框架之本地化部署

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

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

.Net Core 集成ExceptionLess分布式日志框架之本地化部署

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

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

.Net Core 集成ExceptionLess分布式日志框架之本地化部署

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

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

.Net Core 集成ExceptionLess分布式日志框架之本地化部署

执行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(); }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpysjx.html