Exceptionless(二) - 使用进阶

在上一篇文章Exceptionless - .Net Core开源日志框架中就说到如何对Exceptionless进行本地化部署,不过我也跟大家说了,仅限于能用的阶段。那今天我就继续来探讨一下如何再用好。

后台运行服务

上次我就是直接通过脚本Start-ElasticSearch.ps1启动ElasticSearch和Kibana服务,但是大家也能看到,服务是运行起来了,同时还有两个命令窗口,如果一个不小心把窗口关闭了,服务也就关闭了,而且一旦服务器重启了,这两个服务也不会自动启动。
我这里先暂时把Kibana扔一边去,来看看ElasticSearch服务。ElasticSearch是直接有脚本支持将ElasticSearch安装为Windows服务,在后台运行。

less_23_searchservicebat

就是这个elasticsearch-service.bat脚本,支持一下参数:

install 将Elasticsearch作为服务安装

remove 删除已安装的Elasticsearch服务(并在启动时停止服务)

start 启动Elasticsearch服务(如果已安装)

stop 停止Elasticsearch服务(如果启动)

manager 启动一个GUI来管理已安装的服务

安装
命令行,进入到elasticsearch-service.bat所在的目录,然后执行下面的脚本

elasticsearch-service.bat install

启动

less_25_servicestarted

这个时候我们可以直接在浏览器访问9200端口看看服务是否正常

less_26_serviceconfirm

继续使用上次部署好的Exceptionless
(如何使用IIS部署Exceptionless Web服务,请看Exceptionless - .Net Core开源日志框架)

因为我是直接用回之前ElasticSearch的节点,而且也没有清空数据,所以可以直接用之前注册的账号重新登录

less_27_weblogin

也是成功的,ElasticSearch服务已经运行在后台了。

自动启动
通过ElasticSearch提供的GUI可以将服务设置为自动启动

elasticsearch-service.bat manager

将Startup Type选择为Automatic,再点击OK保存

less_28_serviceauto

这样,即使服务器重启了,我们的ElasticSearch服务也会自动启动

其实,有玩过Windows服务的朋友一定知道,上面的一些操作在Windows自带的服务管理器也能完成

同时按下"WIN+R" 打开服务的命令运行窗口。在服务运行窗口中输入services.msc

在列表中也可以找到ElasticSearch服务,双击打开属性窗口,跟刚刚的GUI操作就是一样的了

less_29_windowsservice

再看Web.config

上次我只是改了Exceptionless的端口设置,其实这里面还包含很多配置信息

<add connectionString="localhost:6379,abortConnect=false" /> <add connectionString="http://localhost:9200" />

官方是建议大家安装和配置Redis,这样就可以同时运行多个实例,并且重启不会丢失状态,强烈建议在Linux上运行Redis 3.0+版本,RedisConnectionString就是Redis的连接串

ElasticSearchConnectionString是必须的,指向ElasticSearch服务,如果有多个节点,则使用,隔开

<!-- Exceptionless Web 基础Url --> <add key="BaseURL" value="http://localhost:50001/#" /> <!-- 是否启用ssl --> <add key="EnableSSL" value="false" /> <!-- Dev: Use this mode when debugging. (Outbound emails will not be sent) QA: Use this mode when deployed to staging. (Outbound emails restricted) Production: Use this mode when deployed to production. --> <add key="WebsiteMode" value="Production" /> <!-- Controls whether users can signup. --> <add key="EnableAccountCreation" value="true" /> <!-- Controls whether daily summary emails are sent --> <add key="EnableDailySummary" value="true" />

网站模式WebsiteMode主要是限制邮件发送,默认值是Dev,不发送邮件,所以我这里设置为Production

邮件发送配置,记得跟上面的WebsiteMode一起配置

<add key="SmtpHost" value="smtp.qq.com" /> <add key="SmtpPort" value="25" /> <add key="SmtpEncryption" value="SSL" /> <add key="SmtpUser" value="xxx@qq.com" /> <add key="SmtpPassword" value="xxx" />

我在案例中使用的是自己的qq邮箱。我在qq邮箱中已经开启了SMTP服务,并且也通过一个控制台应用程序测试可以发送邮件。
但是在Exceptionless这里一样的设置就是不行,在Web中点击发送邮件,log记录错误如下:
ERROR MailMessageJob Job run "MailMessageJob" failed: 由于意外的数据包格式,握手失败。 System.IO.IOException: 由于意外的数据包格式,握手失败。

清除Url
我们现在使用的Url都会带有#!,例如

:50001/#!/type/error/dashboard

可以按照下面步骤清除字符#!

首先保证你的IIS是否已经安装了重写模块,可通过双击IIS中的模块查看是否包含了RewriteModule

更新Web.config文件

释放出在system.webServer中的rewrite节点

删除BaseURL值中的/#

注释了在system.webServer\modules中的<remove />标签

修改app.config.77fc9ddd679d37dc.js文件中USE_HTML5_MODE的值为true

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

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