Serilog是.NET中流行的结构化日志库,通过NuGet安装核心包和Sink后,配置Log.Logger实现控制台和文件输出;使用命名占位符记录上下文信息,支持ASP.NET Core集成,结合Seq或ELK提升日志分析效率。

Serilog 是 .NET 中非常流行的结构化日志库,它能将日志记录为带有属性的结构化数据(如 JSON),便于后续搜索、分析和集中管理。与传统文本日志不同,结构化日志保留了上下文信息,适合集成到 ELK、Seq、Application Insights 等系统。
安装 Serilog 包
在项目中使用 Serilog,先通过 NuGet 安装核心包和所需的接收器(Sink):
Serilog:核心库 Serilog.Sinks.Console:输出到控制台 Serilog.Sinks.File:输出到文件 Serilog.Sinks.Seq(可选):发送到 Seq 服务
可通过 Package Manager 或 CLI 安装:
dotnet add package Serilog dotnet add package Serilog.Sinks.Console dotnet add package Serilog.Sinks.File
配置全局日志记录器
在程序启动时配置 Log.Logger,通常在 Program.cs 或 Main 方法中完成:
using Serilog;Log.Logger = new LoggerConfiguration() .WriteTo.Console() .WriteTo.File(“logs/log.txt”, rollingInterval: RollingInterval.Day) .CreateLogger();// 使用后记得刷新并关闭try{ // 启动应用逻辑}finally{ Log.CloseAndFlush();}
这样所有日志会同时输出到控制台和按天滚动的日志文件中。
在代码中使用结构化日志
通过 Log.Information、Log.Warning、Log.Error 等方法写入日志。Serilog 会自动提取占位符中的属性值:
var userId = 123; var action = “Login”; Log.Information(“用户 {UserId} 执行了 {Action}”, userId, action);
输出可能是:
{“Timestamp”:”2025-04-05T10:00:00Z”,”Level”:”Information”,”MessageTemplate”:”用户 {UserId} 执行了 {Action}”,”Properties”:{“UserId”:123,”Action”:”Login”}}
注意:{UserId} 和 {Action} 成为结构化字段,可在日志平台中直接查询 UserId=123。
集成到 ASP.NET Core
在 ASP.NET Core 项目中,替换默认日志提供者:
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseSerilog((context, services, configuration) => configuration .WriteTo.Console() .WriteTo.File(“logs/app-.txt”, rollingInterval: RollingInterval.Day) .Enrich.FromLogContext() // 添加上下文信息,如请求 ID .ReadFrom.Services(services)) // 读取配置 .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); });
之后可以在控制器或服务中注入 ILogger,依然享受结构化能力:
private readonly ILogger _logger;public HomeController(ILogger logger){ _logger = logger;}public IActionResult Index(){ _logger.LogInformation(“访问首页,用户IP: {UserIp}”, HttpContext.Connection.RemoteIpAddress); return View();}
基本上就这些。Serilog 的强大在于结构化输出和丰富的 Sink 支持,搭配 Seq 或 Elasticsearch 能极大提升排查效率。关键是用好命名占位符,避免拼接字符串日志。不复杂但容易忽略。
以上就是如何使用 Serilog 在 .NET 中进行结构化日志记录?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1440704.html
微信扫一扫
支付宝扫一扫