重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章将为大家详细讲解有关.Net Core项目如何添加日志功能详解,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
创新互联公司是一家专业从事网站建设、成都网站设计、网页设计的品牌网络公司。如今是成都地区具影响力的网站设计公司,作为专业的成都网站建设公司,创新互联公司依托强大的技术实力、以及多年的网站运营经验,为您提供专业的成都网站建设、营销型网站建设及网站设计开发服务!一、微软内置的日志组件
在.Net Core中使用模板新建的Web Api项目时,会自动加入日志功能。只需要在控制器中注入ILogger就可以了。命名空间为:Microsoft.Extensions.Logging
。
会发现只有Error被打印到了控制台,Trace没有被打印。那是因为在appsetting.json中配置了Logging>Console>Default的等级为Debug,日志的等级大于等于Debug才会输出到控制台。在这里说一下LogLevel:Trace
当打开appsettings.development.json文件你会发现跟appsettings.json配置不同。如下:
{ "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Debug", "System": "Information", "Microsoft": "Information" } } }
例如:
"System": "Information"
表示命名空间以System开头的类中且日志等级大于等于Information才会输出到控制台。
"Default": "Debug"
表示除以System和Microsoft开头的命名空间日志等级大约等于Debug才会输出到控制台。
这里说明一下到底是在什么时候,读取了appsettings.json中的配置了了? 其实是在Program中WebHost.CreateDefaultBuilder(arge)
。
打开源码发现
当然我们可以不用微软提供的默认配置
public class Program { public static void Main(string[] args) { //指定配置文件路径 var configBuilder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile($"appsettings.json", true, true) .AddJsonFile($"appsettings.{EnvironmentName.Development}.json", true, true); var config = configBuilder.Build(); var host = new WebHostBuilder() .UseKestrel() .UseStartup() .UseContentRoot(Directory.GetCurrentDirectory()) .UseUrls(config["AppSettings:Url"])//设置启动时的地址 .Build(); host.Run(); } }
配置文件为:
{ "AppSettings": { "Url": "http://0.0.0.0:6000" }, "Logging": { "IncludeScopes": false, "Debug": { "LogLevel": { "Default": "Info" } }, "Console": { "LogLevel": { "Default": "Warning" } } } }
StartUp为:
public class Startup { public IConfiguration Configuration { get; private set; } public Startup(IHostingEnvironment env)//在构造函数中注入 IHostingEnvironment { Configuration = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile($"appsettings.json") .Build(); } public void ConfigureServices(IServiceCollection services) { services.AddMvc(); } public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } //添加控制台输出 loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); app.UseMvc(); } }
但是微软提供的内置的日志组件没有实现将日志记录到文件、数据库上。下面介绍NLog
二、NLog
首先使用NuGet添加NLog,然后在Startup的Configure中添加以下代码
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } //添加控制台输出 loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); loggerFactory.AddNLog();//添加NLog NLog.LogManager.LoadConfiguration($@"{env.ContentRootPath}/nlog.config");//指定NLog的配置文件 app.UseMvc(); }
配置NLog的配置文件
//将日志通过网络输出 //将日志输出到控制台
xsi:type=“File”
存储日志为文件格式 ,
xsi:type="Console"
表示为控制台输出。
fileName="./logs/${shortdate}/all.log"
表示存储文件路径。
layout="${longdate}|${message} ${exception}"
表示为文件内容的布局。
rules标签下面表示,对应等级的日志写到对应target中。如
表示等级为Info的日志写到target名称为infofile的文件中。
表示日志等级大于Trace的日志写到target名称为allfile和debuge(控制台输出)中。
同样在使用的时候,只需要在用到的地方注入ILogger,就可以使用了。
关于“.Net Core项目如何添加日志功能详解”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。