Exceptionless 是一个开源的实时的日志收集框架,它可以应用在基于 ASP.NET,ASP.NET Core,Web Api,Web Forms,WPF,Console,MVC 等技术栈的应用程序中,并且提供了Rest接口可以应用在 Javascript,Node.js 中。它将日志收集变得简单易用并且不需要了解太多的相关技术细节及配置。
在以前,我们做日志收集大多使用 Log4net,Nlog 等框架,在应用程序变得复杂并且集群的时候,可能传统的方式已经不是很好的适用了,因为收集各个日志并且分析他们将变得麻烦而且浪费时间。
1 从官网下载发布包
https://github.com/exceptionless/Exceptionless/releases
2 参考官方文档 安装部署
https://github.com/exceptionless/Exceptionless/wiki/Self-Hosting
3 鼠标双击 Start.bat(管理员模式) 运行即可
注意:此项目 依赖 ElastaicSearch 项目。(一个搜索引擎项目)先把这个包下载放到目录最好,ps下载不支持断点续传......
访问 http://127.0.0.1:50000/api/v2/status
检测安装状态
二、使用本地服务 Exceptionless 的客户端如何配置
- mvc 环境下, 从 nuget 安装 Exceptionless.Mvc
- <exceptionless apiKey="fT97ZX7Decl09SsFPKBMB2lWrS6wiWK6V6CiMAtX" serverUrl="http://localhost:50000"/> 其中加了 serverUrl="http://localhost:50000" 即 跑Exceptionless服务的地址
三、通过以上操作,就完成了 Exceptionless 的本地搭建
如果发布在局域网的机器,那么,需要改动 BaseURL节点
改成局域网IP 端口号
还要改 app.config.*.js 里面的baseUrl 配置 麻烦。
开启时候 先把搜索引擎 ES 开启。执行安装包下的 Start-ElasticSearch.ps1 脚本
四 开启Redis 缓冲服务
在Linux 下部署很简单 win server 下 ,安装非官方的redis-win 版本
http://www.redis.io/
下载页- 连接到微软开放技术组 在git上的 redis 3.2 win版本。(不推荐在生产环境用win版本,都说测试运行不稳定............!)
以windows 服务的形式运行。
redis 远程访问
原来是redis默认只能localhost登录,所以需要开启远程登录。解决方法如下:
在redis的配置文件redis.conf中,找到bind localhost注释掉。
注释掉本机,局域网内的所有计算机都能访问。
band localhost 只能本机访问,局域网内计算机不能访问。
bind 局域网IP 只能局域网内IP的机器访问, 本地localhost都无法访问。
在redis3.2之后,redis增加了protected-mode,在这个模式下,即使注释掉了bind 127.0.0.1,再访问redisd时候还是报错,如下
修改办法:protected-mode no
五 异常数据-默认存储在文件中,目录
<!-- Folder used to store event post data -->
<add key="StorageFolder" value="|DataDirectory|\storage"/>
而且异常信息进行了加密处理
{ "ProjectId": "590a8e5c002f0e0f44a5ef7f", "Data": "H4sIAAAAAAAEAMVWW4vbRhT+K0b0oSW2mItkW3pK2W6IIdkN2U1aWAUxksb2EF3MzMjZbVhoSy4tBNKXfWj71D6X0odS0jT/prtx8i9yxpK1F9sNNAnFL9KZmfN93zmf5njvvqUPJtzyLS5lIa22lTBtXgnCvQ5yO8jZxcinxHd6dreLIOxcQn0foWors/z71uUpl0oUORzDNjI/WLxcKi7Nqkh4roU+gNVPk0zkQmnJNGAdwqYKFXZlRVKmXFn+3uI5FInl47aVs8wQ2uVKb+7HfKIB6RpXCjBW4QoVAp4EOC1L3rZiyUFREq7UhamPsE16oIp4jS7AF0Ox7oypBbEx6hLXc+szh+1zrEnDumGcXmTsAF/suXhO+l9JEsd3HZtiiGL3LSSdDsa7mPgIznSXGnVDAsdY314i8dHHtzdv7gy2t8KdW1euDL74pEV6mHhD6hBiHV5QR1ersz8XeVLce1eVXYTp21rRqHR9umzH/6ryDsCBDjYyQLM/fjl5cfTqz4cnj58fP3/08uj32d8PZkdPXv/w/T9ffQNo9Wezc6A0z+xBnvD97VJvD2+yfMSbwsBGpVl8NwTPx3zu7oTHKZMiH4Wmimoyj9d5jIpmeYGgzZvVFH3EdbgxZlJV5Vl0pYNPKzC4tj0cKq6r6BbTYsoXEQSf3YRJyKWhQHNGdWJhNJwqG+Sakvp1DdUFnBpAmYcsVfC9DRSU4ezbvA4srUNQZmOnoUirpMZFfhCcPPz15Omz1z//NfvptyA456sgUDK+EOuYlpIgWLoUggC6PwJ1dmzqk4ocYMosMlcR7YEFi7TMgCzB7TWNWHXPLPWkBjltynUm8vP9WNmOPrnYDuL21jaEyZE647S5D/bufJCWgPc1wIG1gMa4SEyOD2jU/9mA88mTT4Us8gyGhUkxkUUMzS5kGBelCTkAXGiWhpPxgRIxPGQ8K8xc6VPcc13ketBMNmUiZRFIW9oGF7aLPEJdYmyXZSxPQuNHEBC8Z89HIg+Cz3hUjlYs21M1LpS2+T4PrBZUrZYarhus9YEzO03brD5y0JlYJTNU4ktIQsDGFLldqNkYLvmkOuHBdibjsdA81qU0YPtdB4JF2KBfF7EsVDHUrXp8tDBqHb/4+vjZj7Pvvq33ns6Trk1sj6Bq1GcMcufNPbJxdXOrc2PD/AfI4dJN04oFcIuxk/T7CXcdL6KMRnHk0ChCXr9PmUkkoeMi4+H5uUURxZ7tABoMeLDNG/dqtVEsCQAA", "CharSet": "utf-8", "MediaType": "application/json", "ApiVersion": 2, "UserAgent": "exceptionless/4.0.0", "ContentEncoding": "gzip", "IpAddress": "172.16.20.248" }
UI
用的Angular.js 1.64开发的单页面程序。
主题包地址:https://github.com/exceptionless/Exceptionless.UI
编译后 合并为单个app.*.js
集成了
/**
* @license AngularJS v1.6.4
* (c) 2010-2017 Google, Inc. http://angularjs.org
* License: MIT
*/
(function(window) {'use strict';
-------------------------------------------------------------------
六 集成为win 服务
将ES 注册为win 服务 在bin 下的 -service.bat install remove
----------注意,如果使用了excepless 的 Start-ElasticSearch.ps1 脚本启动,那么他使用的是 node-1 节点的es ,用户数据 在 data目录一定要注意!!!!!!!!!!!!!
示范代码:
public class ExceptionLessLog :ILog
{
/// <summary>
/// 跟踪
/// </summary>
public void Trace(string message, params string[] tags)
{
ExceptionlessClient.Default.CreateLog(message, LogLevel.Trace).AddTags(tags).Submit();
}
/// <summary>
/// 调试
/// </summary>
public void Debug(string message, params string[] tags)
{
ExceptionlessClient.Default.CreateLog(message, LogLevel.Debug).AddTags(tags).Submit();
}
/// <summary>
/// 信息
/// </summary>
public void Info(string message, params string[] tags)
{
ExceptionlessClient.Default.CreateLog(message, LogLevel.Info).AddTags(tags).Submit();
}
/// <summary>
/// 警告
/// </summary>
public void Warn(string message, params string[] tags)
{
ExceptionlessClient.Default.CreateLog(message, LogLevel.Warn).AddTags(tags).Submit();
}
/// <summary>
/// 错误
/// </summary>
public void Error(string message, params string[] tags)
{
ExceptionlessClient.Default.CreateLog(message, LogLevel.Error).AddTags(tags).Submit();
}
}
参考:
https://github.com/exceptionless/Exceptionless/
http://www.cnblogs.com/kangwl/p/5859416.html
http://www.cnblogs.com/savorboard/p/exceptionless.html
http://www.cnblogs.com/LiangSW/p/6026817.html
http://www.fwhyy.com/2016/09/use-exceptionLess/
http://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA==&mid=2654067937&idx=1&sn=01e502d9ef5cf77817aa80db6903923d&scene=0#wechat_redirect