在.NET Core中使用Exceptionless分布式日誌收集框架
一.Exceptionless簡介
Exceptionless 是一個開源的實時的日誌收集框架,它可以應用在基於 ASP.NET,ASP.NET Core,Web Api,Web Forms,WPF,Console,MVC 等技術棧的應用程序中,並且提供了Rest接口可以應用在 Javascript,Node.js 中。它將日誌收集變得簡單易用並且不需要了解太多的相關技術細節及配置。
在以前,我們做日誌收集大多使用 Log4net,Nlog 等框架,在應用程序變得復雜並且集群的時候,可能傳統的方式已經不是很好的適用了,因為收集各個日誌並且分析他們將變得麻煩而且浪費時間。
現在Exceptionless團隊給我們提供了一個更好的框架來做這件事情,我認為這是非常偉大並且有意義的,感謝他們。
二.使用
這裏有兩種方式(本地,遠程)
- 本地需要一定的環境要求(NET 4.6.1 、Java JDK 1.8+、IIS Express 8+)
- 遠程就比較方便了,非常的方便,那麽今天就給大家來一波Exceptionless遠程使用的教程。
三.註冊賬號並配置
官網:http://exceptionless.com
GitHub:https://github.com/exceptionless/Exceptionless
關於官方首頁訪問慢的問題,那沒有辦法,最好翻個梯子,當然也就只是首頁慢了點,因為首頁有谷歌的api,管理頁面就沒有那麽卡了(36ms)左右。
由於我們使用的遠程日誌,我們得進入官方申請賬號,進入官方進行賬號註冊。
進入創建項目,輸入項目信息,創建項目!
這裏當然可以選擇我們喜愛的.NET Core !官方已經給你說好了,那麽這個時候你的項目就可以用Exceptionless來記錄日誌了。那我們來創建一個.NET Core 程序吧?
四.在程序中進行遠程記錄
nuget完Exceptionless.AspNetCore之後會出現一個txt文件,這個txt文件是給你的一個簡單的使用教程, 當然你可以選擇刪除。
配置中間件
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseExceptionless("xxxxxxxxxxxxxx");
app.UseMvc();
}
這個時候你就可以正常使用了,那麽我們現在故意報錯一下!
public ActionResult<IEnumerable<string>> Get()
{
throw new Exception("my text info");
return new string[] { "value1", "value2" };
}
現在啟動我們的瀏覽器,報錯成功。
那我們的框架收集到了嗎?刷洗一下,成功記錄下來了。
那它替我們收集了什麽信息呢?我們一探究竟!點進去噢!發現這真的太棒了。
除了記錄一些基本的http信息之外,竟還有系統版本、系統架構、電腦版本、運行時等。灰常NB啊。
當然我們惡意報錯是不對的,可以trycath一下,那麽代碼就變成了這樣。
try
{
throw new ApplicationException(Guid.NewGuid().ToString());
}
catch(Exception ex)
{
ex.ToExceptionless().Submit();
}
除了一些異常記錄之外,ExceptionLess還提供了Log (日誌)、Feature Usages(功能用途)、404、Custom Event(自定義事件)。擴展的東西是在 ExceptionlessClient.Default類中。有興趣的話可以研究。
附日誌記錄封裝類(很簡單的那種。大佬別打我)
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();
}
}
總結:
ExceptionLess功能非常強大,你看我都沒怎麽敲代碼就搞定了這麽炫酷的功能,沒試過的小夥伴趕緊試一試吧.
- 相關文章1:http://www.cnblogs.com/savorboard/p/exceptionless.html (遠程)
- 相關文章2:https://www.cnblogs.com/yilezhu/p/9193723.html(本地部署)
在.NET Core中使用Exceptionless分布式日誌收集框架