日誌,在咱們每一個項目中是必不可少的,它不只能在調試的時候測試數據,並且在項目上線,也是咱們排查錯誤的得力助手,那我就能談談,用的多的幾個日誌框架吧!若是有不對的地方,歡迎來指教錯誤,謝謝!json
一看這個名字,你們也能猜到,這是微軟自帶的一個日誌框架。app
建立ASP.NET Core程序,程序會自帶Microsoft.Extensions.Logging,若是沒有,請在Nuget安裝
在你項目中,找到appsetting.json文件,打開後,以下圖:框架
{ "Logging": { "LogLevel": { "Default": "Debug", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information", } }, "AllowedHosts": "*" }
你確定會很疑惑,這些配置是什麼意思,爲啥要這樣寫?函數
appsetting.json是一個配置文件,咱們不少配置信息,均可以寫到這個文件中來,日誌的配置也是如此。測試
Logging:是日誌配置的默認名稱,若是想自定義,也是能夠,後面會演示 LogLevel:日誌級別(日誌的輸出是有輸出級,以下圖所示) Default:默認級別 Microsoft:系統級別 Microsoft.Hosting.Lifetime:生命時間基本
public enum LogLevel { //應用程序數據。 這些消息默認狀況下處於禁用狀態,而且永遠不該在生產環境中啓用。 Trace, //在開發過程當中用於交互式調查的日誌。 這些日誌應該主要包含對調試有用的信息,而且沒有長期的信息 Debug, //跟蹤應用程序通常流程的日誌。 這些日誌應具備長期 Information, //在應用程序流中突出顯示異常或意外事件的日誌,但不會致使應用程序執行中止。 Warning, //突出顯示因爲故障而中止當前執行流的日誌。這些應代表當前活動失敗,而不是整個應用程序範圍內的失敗。 Error, //描述不可恢復的應用程序或系統崩潰或災難性事件的日誌,必須當即引發注意的故障。 Critical, //不用於編寫日誌消息。 指定不該將日誌記錄類別 None }
優先等級從上到下遞減Trace<Debug<Information<Warning<Error<Critical<Noneui
咱們能夠新建一個類LoggerHelper,而後把ILogger接口的中定義的方法都實現一遍,能夠本身加時間,加條件過濾等。把系統的日誌框架,本身套一個殼,而後封裝起來,而後就能夠隨心所欲了。調試
/// <summary> /// 日誌輔助類 /// </summary> public class LoggerHelper { ILogger<LoggerHelper> _logger; public LoggerHelper(ILogger<LoggerHelper> logger) { _logger = logger; } public void LogInformation(string msg) { _logger.LogInformation(Write(msg)); } public void LogDebug(string msg) { _logger.LogDebug(Write(msg)); } public void LogError(string msg) { _logger.LogError(Write(msg)); } public void LogWarning(string msg) { _logger.LogWarning(Write(msg)); } protected string Write(string msg) { return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":" + msg; } }
第一步:注入服務日誌
public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddTransient<LoggerHelper>(); }
第二步:添加構造函數code
private readonly LoggerHelper _logger; public WeatherForecastController(LoggerHelper logger) { _logger = logger; }
第三步:調用服務orm
_logger.LogInformation("LogInformation"+Guid.NewGuid().ToString("N")); _logger.LogDebug("LogDebug" + Guid.NewGuid().ToString("N")); _logger.LogWarning("LogWarning" + Guid.NewGuid().ToString("N")); _logger.LogError("LogError" + Guid.NewGuid().ToString("N"));
第四步:配置日誌級別
"Logging": { "LogLevel": { "Default": "Debug", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information", "LoggerHelper": "Information" }, "Console": { "IncludeScopes": true } },
第五步:效果展現
看到這裏是否是有疑問?
info: Microsoft.Hosting.Lifetime[0] Now listening on: http://localhost:5000
答:info:日誌級別;Microsoft.Hosting.Lifetime[0]:日誌做用域;Now listening on: http://localhost:5000:日誌內容
可能我這篇博客,仍是比較淺顯的,沒有深刻的介紹日誌中不一樣做用越的日誌級別,只是以個人角度,給你們講解一下Asp.Net Core中的系統自帶的日誌框架的使用,以及如何封裝一個本身一個類,特殊處理日誌信息。