1、安装引用 Microsoft.Extensions.Logging
使用 Microsoft.Extensions.Logging日志框架,需要安装引用 Microsoft.Extensions.Logging,安装的方法有多种,分别如下,
1)使用Nuget界面管理器
搜索 "Microsoft.Extensions.Logging" 在列表中分别找到它,点击"安装"
相关文档:VS(Visual Studio)中Nuget的使用
2)使用Package Manager命令安装
PM> Install-Package Microsoft.Extensions.Logging
3)使用.NET CLI命令安装
> dotnet add package Microsoft.Extensions.Logging
另外,还需要根据需要安装日志提供程序,如Microsoft.Extensions.Logging.Console、Microsoft.Extensions.Logging.File 等。
2、通过依赖方式使用
1)配置日志
在应用程序的启动时,在 Program.cs 文件的 CreateHostBuilder 方法中配置,代码如下,
using Microsoft.Extensions.Logging; public class Program { public static void Main(string[] args) { var host = CreateHostBuilder(args).Build(); host.Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureLogging((hostingContext, logging) => { logging.ClearProviders(); // 清除默认提供程序 logging.AddConsole(); // 添加控制台日志提供程序 }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); }
2)使用日志
在应用程序的代码中,可以通过依赖注入来获取实例记录日志,代码如下,
using Microsoft.Extensions.Logging; public class MyService { private readonly ILogger<MyService> _logger; public MyService(ILogger<MyService> logger) { _logger = logger; } public void DoSomething() { _logger.LogInformation("Doing something..."); // 其他逻辑 } }
3、通过实例直接使用
有些情况,需要更早记录日志,可能不使用依赖入方式,而是直接获取日志实例记录日志,此时需要手动直接创建日志对象,代码如下,
using Microsoft.Extensions.Logging; public class Program { public static void Main(string[] args) { //配置日志 var configuration = new ConfigurationBuilder() // 添加所有使用的配置 .AddJsonFile("appsettings.json", false, true) .AddEnvironmentVariables() .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", true, true) .Build(); using var loggerFactory = LoggerFactory.Create(loggingBuilder => loggingBuilder .AddConfiguration(configuration) .AddApplicationInsights()); //使用日志 ILogger logger = loggerFactory.CreateLogger<Program>(); logger.LogInformation("Example log message"); var host = CreateHostBuilder(args).Build(); host.Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); }