日志,在咱们每一个项目中是必不可少的,它不只能在调试的时候测试数据,并且在项目上线,也是咱们排查错误的得力助手,那我就能谈谈,用的多的几个日志框架吧!若是有不对的地方,欢迎来指教错误,谢谢!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中的系统自带的日志框架的使用,以及如何封装一个本身一个类,特殊处理日志信息。