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包,大家自行查找即可