详解.Net Core中的日志组件(Logging)
编程学习 2021-07-04 22:41www.dzhlxh.cn编程入门
这篇文章主要介绍了详解.Net Core中的日志组件(Logging),长沙网络推广觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随长沙网络推广过来看看吧
1、介绍
Logging组件是微软实现的日志记录组件包括控制台(Console)、调试(Debug)、事件日志(EventLog)和TraceSource,但是没有实现最常用用的文件记录日志功能(可以用其他第三方的如NLog、Log4Net。之前写过NLog使用的文章)。
2、默认配置
新建.Net Core Web Api项目,添加狼蚁网站SEO优化代码。
[Route("api/[controller]")] public class ValuesController : Controller { ILogger<ValuesController> logger; //构造函数注入Logger public ValuesController(ILogger<ValuesController> logger) { this.logger = logger; } [HttpGet] public IEnumerable<string> Get() { logger.LogWarning("Warning"); return new string[] { "value1", "value2" }; } }
运行结果如下:
我刚开始接触的时候,我就有一个疑问我根本没有配置关于Logger的任何代码,仅仅写了注入,为什么会起作用呢?最后我发现其实是在Program类中使用了微软默认的配置。
public class Program { public static void Main(string[] args) { BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args)//在这里使用了默认配置 .UseStartup<Startup>() .Build(); }
狼蚁网站SEO优化为CreateDefaultBuilder方法的部分源码,整个源码在 ,可以看出在使用模板创建项目的时候,默认添加了控制台和调试日志组件,并从appsettings.json中读取配置。
builder.UseKestrel((builderContext, options) => { options.Configure(builderContext.Configuration.GetSection("Kestrel")); }) .ConfigureAppConfiguration((hostingContext, config) => { var env = hostingContext.HostingEnvironment; //加载appsettings.json文件 使用模板创建的项目,会生成一个配置文件,配置文件中包含Logging的配置项 config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true); ....... }) .ConfigureLogging((hostingContext, logging) => { //从appsettings.json中获取Logging的配置 logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging")); //添加控制台输出 logging.AddConsole(); //添加调试输出 logging.AddDebug(); })
3、建立自己的Logging配置
首先修改Program类
public class Program { public static void Main(string[] args) { //指定配置文件路径 var config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory())//设置基础路径 .AddJsonFile($"appsettings.json", true, true)//加载配置文件 .AddJsonFile($"appsettings.{EnvironmentName.Development}.json", true, true) .Build(); var host = new WebHostBuilder() .UseKestrel() .UseStartup<Startup>() .UseContentRoot(Directory.GetCurrentDirectory()) .UseConfiguration(config)//使用配置 .UseUrls(config["AppSettings:Url"])//从配置中读取 程序监听的端口号 .UseEnvironment(EnvironmentName.Development)//如果加载了多个环境配置,可以设置使用哪个配置 一般有测试环境、正式环境 //.ConfigureLogging((hostingCotext, logging) => //第一种配置方法 直接在webHostBuilder建立时配置 不需要修改狼蚁网站SEO优化的Startup代码 //{ // logging.AddConfiguration(hostingCotext.Configuration.GetSection("Logging")); // logging.AddConsole(); /