Serilog:.NET开发者的强大日志库详解

2025年06月04日/ 浏览 4

安装和配置

在 .NET 项目中引入 Serilog 非常简单,只需通过 NuGet 包管理器安装 SerilogSerilog.Sinks.File(或其他所需的 Sink)即可。以下是一个基本的安装示例:

bash
dotnet add package Serilog
dotnet add package Serilog.Sinks.File

接下来,在应用程序的启动代码中配置 Serilog,以实现日志的基本功能:

“`csharp
using Serilog;
using Serilog.Sinks.File;
using System;

class Program
{
public static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.File(“logs/myapp.txt”, rollingInterval: RollingInterval.Day)
.CreateLogger();

    Log.Information("Application started.");
    // 应用程序逻辑...
}

}
“`

使用方法与高级功能

Serilog 的 API 设计使得日志记录变得直观且易于集成。除了基本的日志级别和输出配置外,它还支持结构化日志记录、属性注入、模板定制等高级功能。例如,可以定义一个包含多个属性的日志事件:

csharp
var properties = new Dictionary<string, object> { { "User", "Alice" }, { "Action", "Login" } };
Log.Information("User {User} performed {Action}", properties); // 输出:User Alice performed Login in the log file.

此外,Serilog 允许通过模板自定义输出格式,并支持自定义序列化器以适应特定的日志处理需求。这对于实现复杂的日志分析或满足特定的日志存储格式要求非常有用。

与 ASP.NET Core 的集成

在 ASP.NET Core 应用中集成 Serilog 更加简便。通过使用 Serilog.AspNetCore NuGet 包,可以轻松地将 Serilog 集成到 ASP.NET Core 的生命周期中,自动捕获请求和响应的日志、异常等。配置示例如下:

“`csharp
public class Program
{
public static void Main(string[] args) => CreateHostBuilder(args).Build().Run();
static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) // 使用默认的 ASP.NET Core 配置… // 并添加 Serilog .UseSerilog(); // …的结束 .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); }); } } // 在 Startup 类中配置 public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseSerilogRequestLogging(); // 启用请求日志 } } // 这样,Serilog 将自动捕获 ASP.NET Core 应用中的请求、响应及异常等信息。

picture loss