SuperAPI AI 工具集

aspnet-logging

通用与其它

查看项目

更新于 10-16 01:37

技能介绍

用途:为 ASP.NET Core 应用搭建或升级结构化日志,替代 Console.WriteLine 与纯文本日志,覆盖新项目初始化、接入 Serilog/Seq/Elasticsearch/Application Insights、请求日志、脱敏与分布式追踪等场景。

主要能力:对比内置 ILogger<T> 与 Serilog(内置无需额外包,支持 Console/Debug/EventSource/EventLog 等 sink 与有限 Scope 增强;Serilog 提供 100+ sink、更丰富的 Enrichment),并给出通用规则:开发与类库用内置,生产应用用 Serilog 并配合 WriteTo.Console() 与生产 sink。强调使用消息模板而非字符串插值,属性名用 PascalCase 以便在 sink 中成为可搜索字段。

使用方式:通过 dotnet add package 安装 Serilog.AspNetCore、Serilog.Sinks.Console/File/Seq 及 Enrichers 包;在 Program.cs 用 builder.Host.UseSerilog(...) 配置 ReadFrom.Configuration、Enrich.FromLogContext、WriteTo.Console/File/Seq,并调用 app.UseSerilogRequestLogging()。可用 appsettings.json 的 Serilog 节点配置 MinimumLevel、Override、WriteTo、Enrich。提供 CorrelationIdMiddleware 示例,通过 LogContext.PushProperty 与 IDiagnosticContext 注入 CorrelationId,并需放在管道靠前位置。还给出请求日志定制(MessageTemplate、GetLevel、EnrichDiagnosticContext)、BeginScope 分组日志、敏感数据脱敏(自定义 Destructure 或 .NET 8+ Microsoft.Extensions.Compliance.Redaction)、OpenTelemetry 追踪与指标接入(AddAspNetCoreInstrumentation、AddOtlpExporter 等)。

适用场景与限制:适用于 ASP.NET Core 生产服务的日志规范化、排障与合规脱敏。文档列出常见反模式(插值日志、记录密码/令牌、只记 ex.Message、生产默认开 Trace/Debug、重复分层记录、忘记 Log.CloseAndFlushAsync、热路径同步 HTTP sink、文件日志不滚动)及性能建议(异步/批量 sink、采样、避免紧循环 LogInformation)。具体价格、平台支持与效果数据暂未提供。