写点什么

在 ASP.NET Core 中引入 Serilog 记录日志

作者:雄鹿 @
  • 2024-03-25
    广东
  • 本文字数:1319 字

    阅读完需:约 4 分钟

在 ASP.NET Core 中引入 Serilog 记录日志

本文章将介绍在 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官方文档

发布于: 刚刚阅读数: 8
用户头像

雄鹿 @

关注

心像开满花的树。 2019-01-04 加入

一名全栈开发工程师,热爱编程,对新技术充满好奇心,专注于使用ASP.NET Core和Angular进行Web应用的开发。

评论

发布
暂无评论
在 ASP.NET Core 中引入 Serilog 记录日志_ASP.NET Core_雄鹿 @_InfoQ写作社区