返回

.NET 日志库 Serilog 使用教程

2025-03-15 .NET Serilog 366 0

1. Serilog 简介

Serilog 是 .NET 生态中强大且灵活的日志库,支持结构化日志记录,并提供多种日志接收器(Sinks),可以将日志输出到控制台、文件、数据库等不同存储介质。Serilog 适用于控制台应用、ASP.NET Core 项目以及各种 .NET 应用程序。

2. 安装 Serilog

在 .NET 项目中,可以通过 NuGet 安装 Serilog 及相关扩展包:

dotnet add package Serilog
dotnet add package Serilog.Sinks.Console
dotnet add package Serilog.Sinks.File
dotnet add package Serilog.AspNetCore

3. 在控制台应用中使用 Serilog

在 Program.cs 中配置并使用 Serilog:

using Serilog;

class Program
{
    static void Main()
    {
        Log.Logger = new LoggerConfiguration()
            .WriteTo.Console()
            .WriteTo.File("logs/log-.txt", rollingInterval: RollingInterval.Day)
            .CreateLogger();

        Log.Information("Hello, Serilog!");
        Log.Warning("This is a warning message.");
        Log.Error("An error occurred.");

        Log.CloseAndFlush();
    }
}

此配置将日志输出到控制台,并将日志文件按天存储在 logs 目录下。

4. 在 ASP.NET Core 中使用 Serilog

在 Program.cs 中配置 Serilog 作为默认日志提供程序:

using Serilog;

var builder = WebApplication.CreateBuilder(args);

// 配置 Serilog
Log.Logger = new LoggerConfiguration()
    .WriteTo.Console()
    .WriteTo.File("logs/webapp-.txt", rollingInterval: RollingInterval.Day)
    .CreateLogger();

builder.Host.UseSerilog();

var app = builder.Build();

app.MapGet("/", () => "Hello Serilog in ASP.NET Core!");

app.Run();

在 ASP.NET Core 中,Serilog 作为全局日志提供程序,可以自动替换默认的 ILogger。

5. 使用结构化日志

Serilog 支持结构化日志,可使用 {} 传递参数,提高日志的可读性和可查询性:

Log.Information("User {UserId} logged in at {Time}", 123, DateTime.UtcNow);

这比字符串拼接更高效,并且在日志系统(如 Elasticsearch)中可以轻松查询特定字段的数据。

6. 使用不同的日志接收器(Sinks)

Serilog 提供多种日志存储方式,例如:

  • 控制台(Serilog.Sinks.Console)
  • 文件(Serilog.Sinks.File)
  • 数据库(Serilog.Sinks.MSSqlServer)
  • Elasticsearch(Serilog.Sinks.Elasticsearch)

例如,将日志发送到 Elasticsearch:

dotnet add package Serilog.Sinks.Elasticsearch
Log.Logger = new LoggerConfiguration()
    .WriteTo.Elasticsearch(new Serilog.Sinks.Elasticsearch.ElasticsearchSinkOptions(new Uri("http://localhost:9200")))
    .CreateLogger();

这样日志数据就可以存入 Elasticsearch,并在 Kibana 等工具中进行分析。

Serilog 是 .NET 生态中最流行的日志库之一,它支持结构化日志、丰富的日志存储选项,并能与 ASP.NET Core 无缝集成。无论是控制台应用还是 Web 应用,使用 Serilog 都能显著提升日志管理能力。

您可能感兴趣:

阿里云 云服务器 99元1年 2核2G 3M固定带宽 续费与新购同价

DOVE 网络加速器 梯子 免费 试用

椤堕儴