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>();
});
}