.NET 通过 Serilog 和 Application Insights 简化 ASP.NET Core 日志记录
阅读:70
点赞:0
一. 引言
日志记录在应用程序开发中至关重要,它帮助我们监控和排查应用程序中的问题和错误。Serilog 是一个流行的日志记录库,它提供了结构化日志功能,使得问题的识别和解决更加高效。
Serilog 是专为 .NET 应用程序设计的诊断日志库。它提供了简单、灵活且强大的日志记录方式,可以记录应用程序事件、错误及其他相关信息。Serilog 的一个主要优点是支持结构化日志记录,允许开发者记录丰富的结构化数据,而不仅仅是简单的文本消息。
在这篇文章中,我们将学习如何在 ASP.NET Core Web API 项目中使用 Serilog 和 AppInsights 实现应用程序日志记录。
二. 实现步骤
2.1 创建 ASP.NET Core Web API 应用程序
-
打开 Visual Studio,选择“创建新项目”。 -
选择“ASP.NET Core Web API”模板,点击“下一步”。 -
为项目命名并选择项目位置,然后点击“创建”。 -
选择 .NET 8 作为项目框架,如下图所示。
2.2 安装必要的 NuGet 包
在 NuGet 包管理器中安装以下包:
-
Serilog
-
Serilog.AspNetCore
-
Serilog.Sinks.File
-
Serilog.Sinks.ApplicationInsights
2.3 配置 Serilog
在 appsettings.json
文件中配置 Serilog。下面是配置示例,其中包含了日志记录到 Application Insights 的设置。
{
"Serilog": {
"Using": [
"Serilog.Sinks.ApplicationInsights"
],
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
},
"WriteTo": [
{
"Name": "ApplicationInsights",
"Args": {
"connectionString": "<YOUR_CONNECTION_STRING>",
"telemetryConverter": "Serilog.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter, Serilog.Sinks.ApplicationInsights"
}
}
],
"Enrich": [ "FromLogContext" ],
"Properties": {
"Application": "Connect.IMS"
}
}
}
注意: 为了使上述配置生效,您需要拥有 Azure 订阅,并且已经创建了 Application Insights。
2.4 在 Program.cs 中添加 Serilog 配置
在 Program.cs
文件中,添加 Serilog 配置:
builder.Host.UseSerilog((context, configuration) =>
configuration.ReadFrom.Configuration(context.Configuration));
2.5 添加 Serilog 中间件
在 Program.cs
文件中,app.Run()
之前添加 Serilog 中间件:
app.UseSerilogRequestLogging();
2.6 在 C# 类中记录日志
以下是 TestController
中的日志记录示例:
using Microsoft.AspNetCore.Mvc;
namespace SampleLogger.Controllers;
[ApiController]
[Route("[controller]")]
public class TestController : ControllerBase
{
private readonly ILogger<TestController> _logger;
public TestController(ILogger<TestController> logger)
{
_logger = logger;
}
[HttpGet]
[ProducesResponseType(StatusCodes.Status200OK)]
public IActionResult Get()
{
_logger.LogInformation("Test Controller called!");
return Ok();
}
}
三. 结论
通过集成 Serilog,开发者可以生成更详细和可操作的日志数据,从而改进调试、监控和系统维护。Serilog 的结构化日志记录功能使得分析和可视化日志变得更加容易,对于现代应用程序来说至关重要。通过使用 Serilog,您可以显著提高应用程序的可追溯性、可靠性和整体性能。希望本文对您有所帮助。