ASP .NET Core 学习(.NET9)Serilog日志整合

Serilog 是一个功能强大的 .NET 日志库,以其简洁的配置和灵活的输出方式而受到开发者喜爱。支持多种日志输出目标(如控制台、文件、数据库等),并且可以通过结构化日志的方式记录丰富的上下文信息,便于后续的日志分析和调试。Serilog 还提供了丰富的扩展包,能够轻松集成到各种 .NET 应用程序中,帮助开发者高效地管理和记录日志,这里我们选用控制台输出和文件输出日志即可满足大部分业务需求。

一、NuGet 安装

csharp 复制代码
// 核心库
Serilog	
// AspNetCore中使用Serilog	
Serilog.AspNetCore	
// 控制台输出
Serilog.Sinks.Console
// 日志文件输出
Serilog.Sinks.File

二、配置 Serilog

Program.cs中的Main方法中添加如下代码

csharp 复制代码
public static void Main(string[] args)
{
  var builder = WebApplication.CreateBuilder(args);
  //...
  #region 配置 Serilog

  Log.Logger = new LoggerConfiguration()
       .MinimumLevel.Information() // 设置最低日志级别为 Info
       .WriteTo.Console()   // 输出到控制台
       // 输出到运行目录的Serilog文件夹下,按天分割 20250101.txt
       .WriteTo.File(AppContext.BaseDirectory + "/Serilog/.txt", rollingInterval: RollingInterval.Day) 
       .CreateLogger();

  Log.Information("Serilog 已配置完成。");

  // 配置Serilog为Log;
  builder.Host.UseSerilog();

  var app = builder.Build();
  //...
}

删除 appsetting.json 配置文件中的 Logging 配置节点

三、使用

Controllers文件夹下,新建SysLogController,内容如下:

csharp 复制代码
[ApiController]
[Route("[controller]")]
[ApiExplorerSettings(GroupName = "v1")] // 配置接口属于v1的swagger文档
public class SysLogController : ControllerBase
{
    private readonly ILogger<SysLogController> _logger;

    public SysLogController(ILogger<SysLogController> logger)
    {
    	// 使用容器中的日志组件,经过前面的配置,日志已经变更为Serilog了
        _logger = logger;
    }

    [HttpGet]
    public string WhiteLog() 
    {
        _logger.LogWarning("这是一条报警信息");
        _logger.LogInformation("这是一条信息");
        _logger.LogError("这是一条错误信息");

        return "操作成功";
    }
}

在浏览器或者调试工具中访问
http://localhost:5000/SysLog

看下控制台输出一下内容:

同时运行目录下有如下文件:

即完成配置要求,之后需要在输出日志的地方进行使用即可,如需要将日志输出到数据库中,Serilog也提供了多个Sink包,大家自行查找即可

相关推荐
Bad_Shepherd1 个月前
ASP .NET Core 学习(.NET9)部署(一)windows
asp .net core
Bad_Shepherd2 个月前
ASP .NET Core 学习 (.NET 9)- 创建 API项目,并配置Swagger及API 分组或版本
asp .net core
爱吃香蕉的阿豪1 年前
ASP .Net Core 配置集合 IConfiguration 的使用
c#·iconfiguration·asp .net core·配置集合