跳至页脚内容
.NET 帮助

Serilog .NET(开发者如何使用)

.NET 应用程序中 Serilog 日志记录器配置和结构化诊断日志行为配置的介绍

.NET Core 中,创建高效的结构化 Serilog 日志配置对于诊断和理解应用程序行为或日志事件至关重要。 在众多日志库中,Serilog 因其强大的结构化日志消息能力而脱颖而出。 与传统日志记录不同,结构化日志记录将日志级别消息格式化为结构化数据,使其更易于分析和查询。 本文探讨了 Serilog 如何在 .NET 6 应用程序中提升日志记录过程,确保每个日志事件不仅仅是一个字符串,而是一个结构化的、可查询的对象。 这种方法将日志消息转变为一种战略资产,促进更有效的监控和分析。

了解 Serilog 的功能

Serilog 是一个用于 .NET 应用程序的强大而灵活的日志库。 它提供多种功能,以增强日志记录体验,并使诊断和分析应用程序行为更加容易。 本节将探讨 Serilog 提供的一些关键功能。

结构化日志记录

Serilog 的一个突出特点是其对结构化日志记录的支持。 Serilog 允许您记录结构化数据,而不仅仅是简单地记录纯文本消息。 这种结构化数据可以是 JSON 对象、字典或任何其他可以序列化的类型。 通过记录结构化数据,您可以使用 Elasticsearch 或 Splunk 之类的工具轻松分析和查询日志事件。

灵活的配置

Serilog 提供灵活的配置选项,允许您根据应用程序的需要自定义日志记录行为。 您可以通过编程方式或使用配置文件来配置 Serilog。 这种灵活性使您能够在不需要重新启动应用程序的情况下,在运行时调整日志记录行为。

Sink 库

Serilog 提供各种 sink 库,允许您将日志事件发送到不同的目的地。 一些受欢迎的 sink 库包括:

  • Serilog.Sinks.Console: 将日志事件发送到控制台。
  • Serilog.Sinks.File: 将日志事件写入文本文件。
  • Serilog.Sinks.Seq: 将日志事件发送到 Seq,一个结构化日志服务器。
  • Serilog.Sinks.Elasticsearch: 将日志事件发送到 Elasticsearch。

这些 sink 库使 Serilog 可以轻松集成到不同的日志记录基础架构和工具中。

日志丰富化

日志丰富化是一种允许您向日志事件添加额外上下文信息的功能。 Serilog 提供各种丰富器,可以自动向日志事件中添加诸如时间戳、线程 ID 或日志级别等信息。 您还可以创建自定义丰富器以添加特定于应用程序的信息。

日志过滤

Serilog 允许您基于各种标准过滤日志事件。 您可以配置过滤器以根据日志级别、属性值或任何其他条件排除或包括日志事件。 这种过滤功能使您能够专注于与分析或故障排除最相关的日志事件。

通过了解和利用这些功能,您可以利用 Serilog 的强大功能来增强日志记录能力,并获得有关应用程序行为的宝贵见解。

结构化日志记录: A Core Feature

Serilog 的主要优势在于将日志消息转变为结构化数据。 与其他输出纯文本的日志库不同,Serilog 生成的是结构化的 JSON 格式日志,简化了日志数据的解析和查询。 这种能力对于现代应用程序至关重要,因为日志分析和监控是运营智能的重要组成部分。 当日志消息被输入到像 ELK(Elasticsearch、Logstash、Kibana)堆栈这样的系统进行高级分析时,结构化日志尤为有用。

丰富的日志事件细节

Serilog 通过上下文信息丰富日志事件,为应用程序内部的活动提供一个全面的视图。 每个日志事件可以包含许多细节,除了简单的日志消息外,还包括时间戳、日志级别、异常细节和自定义属性。 这使得 Serilog 在日志深度和清晰度方面优于其他日志库,提供给开发人员关于应用程序行为和性能的关键见解。

在 ASP.NET Core 中实现 Serilog

要在 .NET 6 ASP.NET Core 应用程序中集成 Serilog,首先通过 appsettings.json 文件或 Serilog 配置部分配置 Serilog。 此配置决定如何、在哪里和捕获哪些日志数据。

通过配置文件

使用配置 JSON 文件定义日志级别、输出目的地(如日志文件或控制台)和日志输出格式。 配置文件方法提供了在不修改代码的情况下更改日志记录行为的灵活性。 这是通过在 appsettings.json 文件中指定设置来完成的,允许您将日志输出定向到各种 sink,例如控制台、文件或甚至基于云的日志管理服务。

通过代码编程

或者,使用 LoggerConfiguration 类直接在代码中配置 Serilog。 这种方法通常用于设置更复杂的日志场景,例如动态日志级别或自定义日志 sink。 例如,您可以配置一个滚动日志文件,在特定时间间隔或达到某一大小时创建新的日志文件,确保日志文件管理的效率。

// Create a logger instance with a rolling log file that creates a new log file every day
var logger = new LoggerConfiguration()
    .WriteTo.File("logs/myapp.txt", rollingInterval: RollingInterval.Day) 
    .CreateLogger();
// Create a logger instance with a rolling log file that creates a new log file every day
var logger = new LoggerConfiguration()
    .WriteTo.File("logs/myapp.txt", rollingInterval: RollingInterval.Day) 
    .CreateLogger();
' Create a logger instance with a rolling log file that creates a new log file every day
Dim logger = (New LoggerConfiguration()).WriteTo.File("logs/myapp.txt", rollingInterval:= RollingInterval.Day).CreateLogger()
$vbLabelText   $csharpLabel

与 ASP.NET Core 的集成

将 Serilog 集成到 ASP.NET Core 中涉及通过包管理器控制台添加 Serilog 包,并在 Program.cs 文件中设置记录器。 .NET 6 中的 var buildervar app 语句无缝地将 Serilog 插入到应用程序的日志基础结构中。 此过程用 Serilog 替换默认记录器,确保所有日志消息都通过 Serilog 管道处理。

var builder = WebApplication.CreateBuilder(args);

// Configure Serilog to use settings from appsettings.json and write logs to the console
builder.Host.UseSerilog((ctx, lc) => lc
    .WriteTo.Console()
    .ReadFrom.Configuration(ctx.Configuration));

var app = builder.Build();
var builder = WebApplication.CreateBuilder(args);

// Configure Serilog to use settings from appsettings.json and write logs to the console
builder.Host.UseSerilog((ctx, lc) => lc
    .WriteTo.Console()
    .ReadFrom.Configuration(ctx.Configuration));

var app = builder.Build();
Dim builder = WebApplication.CreateBuilder(args)

' Configure Serilog to use settings from appsettings.json and write logs to the console
builder.Host.UseSerilog(Function(ctx, lc) lc.WriteTo.Console().ReadFrom.Configuration(ctx.Configuration))

Dim app = builder.Build()
$vbLabelText   $csharpLabel

将 Iron 软件套件与 ASP.NET Core 中的 Serilog 集成

Iron 软件套件提供了一系列 C# 库,可以显著增强使用 Serilog 的 .NET 6 应用程序中的日志记录功能。 该套件包括多种工具,如 IronPDF、IronOCR、IronXL、IronZIP、IronQR、IronBarcode 和 IronWebScraper,每个工具都提供了独特的功能,可以集成到 ASP.NET Core 应用程序中以增强其日志记录和数据处理能力。

要在 ASP.NET Core 应用程序中将 Iron 软件套件与 Serilog 集成,请按以下一般步骤操作:

  1. 使用 NuGet 或包管理器控制台安装所需的 Iron 软件套件包。
  2. 使用所需的 sink 库(例如用于日志文件的 Serilog.Sinks.File 或用于控制台输出的 Serilog.Sinks.Console)配置 Serilog。
  3. 在应用程序的代码中使用 Iron 软件套件库,以利用其功能并增强日志记录过程。 这可能涉及任务,例如生成 PDF、读取条形码或抓取网络内容。

通过将 Iron 软件套件与 Serilog 集成,您可以扩展 ASP.NET Core 应用程序的日志记录功能,并利用这些库提供的附加功能。

IronPDF。

IronPDF 允许在 .NET 应用程序中创建、读取和编辑 PDF。 这在与 Serilog 结合生成日志数据的 PDF 报告时尤其有用,可以在标准化格式中轻松分发和查看日志信息。

Serilog .NET(开发者如何工作):图 1 - IronPDF

光学字符识别 (OCR) 是一种将不同类型的文档转换为可编辑和可搜索数据的技术。

IronOCR 是一个光学字符识别(OCR)库,可以将图像翻译为 125 种语言的文本。 该功能可用于需要从图像或扫描文档中提取文本数据的日志记录场景,从而使用更多上下文信息丰富日志数据。

Serilog .NET(开发者如何工作):图 2 - IronOCR

了解更多关于 IronXL 是一个 Excel 库,可帮助处理 Excel 文件而无需安装 Excel。

IronXL 提供无需 Office Interop 的工作 Excel 的功能。 这在日志记录中尤其有用,因为日志数据可以导出到 Excel 进行进一步分析和报告,提供了一个熟悉的数据操作和可视化界面。

Serilog .NET(开发者如何工作):图 3 - IronXL

开始使用 IronBarcode 是一个专为 .NET 框架设计的条码读取和写入库。

IronBarcode 促进 QR 码和条形码的读取和生成。 该库可以在日志文件中嵌入或提取编码信息,增强日志信息的安全性和可追溯性。

Serilog .NET(开发者如何工作):图 4 - IronBarcode

结论

在 ASP.NET Core 应用程序中集成 Iron 软件套件和 Serilog 既丰富了日志记录过程,又增加了处理、呈现和分析日志数据的多功能性。 无论是生成 PDF 报告、处理基于图像的日志、处理 Excel 数据、管理日志文件大小、安全日志信息还是抓取网络内容,将 Serilog 与 Iron 软件套件结合使用,为 .NET 6 环境中的高级日志记录和数据处理打开了无数可能性。

Iron 软件套件提供 Iron 软件 C# 库的免费试用版,这是开发人员探索其功能和能力以增强其 ASP.NET Core 应用程序的绝佳机会,尤其是与 Serilog 集成以实现高级日志记录和数据处理功能时。

常见问题解答

Serilog 如何增强 .NET 应用程序中的日志记录?

Serilog 通过将日志事件转换为结构化的、可查询的对象来增强 .NET 应用程序中的日志记录,与传统的纯文本日志相比,这允许更好的诊断和分析。

使用 Serilog 进行结构化日志记录有什么优势?

使用 Serilog 进行结构化日志记录具有更容易的日志数据解析和查询的优势,这对使用 Elasticsearch 等工具进行分析有用,从而提高运营智能和监控能力。

如何在 .NET 6 应用程序中配置 Serilog?

在 .NET 6 应用程序中,可以使用 `LoggerConfiguration` 类或通过 `appsettings.json` 等配置文件来配置 Serilog,允许您在不更改代码的情况下灵活调整日志记录行为。

Serilog 为不同的日志记录目的地提供了哪些集成选项?

Serilog 提供各种 sink 库,用于集成,允许将日志事件发送到不同的目的地,如控制台、文本文件或类似 Elasticsearch 或 Seq 的服务器。

丰富器在 Serilog 日志记录中扮演什么角色?

Serilog 中的丰富器向日志事件添加上下文信息,例如时间戳和日志级别,并且可以创建自定义丰富器以包含特定应用程序数据,从而增强日志的信息价值。

Serilog 可以与其他库结合以增强功能吗?

是的,Serilog 可以与 IronPDF、IronOCR 和 IronXL 等库结合使用,这些库提供 PDF 生成、OCR 处理和 Excel 操作等功能,丰富 .NET 应用程序中的日志记录流程和数据处理。

如何使用 .NET 生成日志数据的 PDF 报告?

您可以使用 IronPDF 等库在 .NET 中生成日志数据的 PDF 报告,该库可以创建、读取和编辑 PDF,允许与日志系统集成以生成详细的日志报告。

是否可以将日志数据导出到 Excel 以便在 .NET 中进行分析?

是的,通过使用 IronXL 等库,您可以在不需要 Office Interop 的情况下操作 Excel 文件,允许将日志数据导出到 Excel,以便在 .NET 应用程序中进行进一步分析和报告。

Iron Software 库对像 Serilog 这样的日志系统有哪些好处?

Iron Software 库通过提供如 PDF 创建、OCR 和 Excel 文件操作等附加功能来增强像 Serilog 这样的日志系统,丰富 .NET 环境中的数据处理和报告能力。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。