本文章将介绍在 ASP.NET Core 中引入 Serilog 进行日志记录
先决条件
.NET 8 SDK
安装 Serilog
核心的包是 Serilog.AspNetCore
当前包里面包含了 Serilog、Serilog.Sinks.Console 和 Serilog.Sinks.File 等内容
其中 Serilog.Sinks.Console 可以在控制台打印日志,Serilog.Sinks.File 可以通过文件打印
可以运行以下 shell 在项目中进行安装
dotnet add package Serilog.AspNetCore -v 8.0.1
复制代码
在 Main 函数 中配置 Serilog
Log.Logger = new LoggerConfiguration()
// 最小的日志输出级别
.MinimumLevel.Information()
// 日志调用类命名空间如果以 Microsoft 开头,覆盖日志输出最小级别为 Information
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
// 配置日志输出到控制台
.WriteTo.Console()
// 配置日志输出到文件,文件输出到当前项目的 logs 目录下
// 日记的生成周期为每天
.WriteTo.File(Path.Combine("logs", @"log.txt"), rollingInterval: RollingInterval.Day)
// 创建 logger
.CreateLogger();
new HostBuilder().UseSerilog().Build().Run();
复制代码
或者
IHostBuilder hostBuilder = new HostBuilder()
.UseSerilog((context, configuration) => {
configuration
.MinimumLevel.Information()
// 日志调用类命名空间如果以 Microsoft 开头,覆盖日志输出最小级别为 Information
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
// 配置日志输出到控制台
.WriteTo.Console()
// 配置日志输出到文件,文件输出到当前项目的 logs 目录下
// 日记的生成周期为每天
.WriteTo.File(Path.Combine("logs", @"log.txt"), rollingInterval: RollingInterval.Day)
// 创建 logger
.CreateLogger();
});
IHost host = hostBuilder.Build();
host.Run();
复制代码
在项目中使用 Serilog 进行日志输出
使用 Serilog 时,直接使用 ILogger 即可
因为此服务项目应该是默认注入了,此处需要依赖关系注入知识
如你不了解依赖关系注入,请看 微软官方文档
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
private readonly ILogger<ValuesController> _logger;
public ValuesController(ILogger<ValuesController> logger)
{
_logger = logger;
}
// GET api/values
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
_logger.LogInformation("Serilog test info.");
_logger.LogError("Serilog test error.");
return new string[] { "value1", "value2" };
}
}
复制代码
随后启动项目即可看到控制台和项目文件中出现配置所对应的控制台日志和日志文件
参考文档
Serilog官方文档
评论