Serilog.Enrichers.ClientInfo 2.1.1
dotnet add package Serilog.Enrichers.ClientInfo --version 2.1.1
NuGet\Install-Package Serilog.Enrichers.ClientInfo -Version 2.1.1
<PackageReference Include="Serilog.Enrichers.ClientInfo" Version="2.1.1" />
paket add Serilog.Enrichers.ClientInfo --version 2.1.1
#r "nuget: Serilog.Enrichers.ClientInfo, 2.1.1"
// Install Serilog.Enrichers.ClientInfo as a Cake Addin #addin nuget:?package=Serilog.Enrichers.ClientInfo&version=2.1.1 // Install Serilog.Enrichers.ClientInfo as a Cake Tool #tool nuget:?package=Serilog.Enrichers.ClientInfo&version=2.1.1
serilog-enrichers-clientinfo
使用客户端 IP、关联 ID 和 HTTP 请求头丰富日志。
安装 Serilog.Enrichers.ClientInfo NuGet 包
Install-Package Serilog.Enrichers.ClientInfo
或
dotnet add package Serilog.Enrichers.ClientInfo
将 enricher 应用于代码中的 LoggerConfiguration
Log.Logger = new LoggerConfiguration()
.Enrich.WithClientIp()
.Enrich.WithCorrelationId()
.Enrich.WithRequestHeader("Header-Name1")
// ...other configuration...
.CreateLogger();
或 appsettings.json
文件中
{
"Serilog": {
"MinimumLevel": "Debug",
"Using": [ "Serilog.Enrichers.ClientInfo" ],
"Enrich": [
"WithClientIp",
"WithCorrelationId",
{
"Name": "WithRequestHeader",
"Args": { "headerName": "User-Agent"}
}
],
"WriteTo": [
{ "Name": "Console" }
]
}
}
ClientIp
ClientIp
enricher 从 HttpContext.Connection.RemoteIpAddress
读取客户端 IP。由于版本 2.1,出于安全原因,它不再读取 x-forwarded-for
标头。要处理转发标头,配置 ForwardedHeadersOptions。如果您仍然想记录 x-forwarded-for
,您可以使用 RequestHeader
enricher。
Log.Logger = new LoggerConfiguration()
.Enrich.WithClientIp()
...
或
{
"Serilog": {
"MinimumLevel": "Debug",
"Using": [ "Serilog.Enrichers.ClientInfo" ],
"Enrich": [
{
"Name": "WithClientIp"
}
],
}
}
CorrelationId
对于 CorrelationId
enricher,您可以
- 配置标头名称,默认标头名称为
x-correlation-id
- 当请求头集合中不存在标头时,设置关联 ID 的值,默认值为 false
Log.Logger = new LoggerConfiguration()
.Enrich.WithCorrelationId(headerName: "correlation-id", addValueIfHeaderAbsence: true)
...
或
{
"Serilog": {
"MinimumLevel": "Debug",
"Using": [ "Serilog.Enrichers.ClientInfo" ],
"Enrich": [
{
"Name": "WithCorrelationId",
"Args": {
"headerName": "correlation-id"
"addValueIfHeaderAbsence": true
}
}
],
}
}
RequestHeader
您可以使用多个 WithRequestHeader
来记录不同的请求头。 WithRequestHeader
接受两个参数;第一个参数 headerName
是要记录的标头名称,第二个参数是 propertyName
,即日志属性名称。
Log.Logger = new LoggerConfiguration()
.Enrich.WithRequestHeader(headerName: "header-name-1")
.Enrich.WithRequestHeader(headerName: "header-name-2", propertyName: "SomeHeaderName")
...
或
{
"Serilog": {
"MinimumLevel": "Debug",
"Using": [ "Serilog.Enrichers.ClientInfo" ],
"Enrich": [
{
"Name": "WithRequestHeader",
"Args": {
"headerName": "User-Agent"
}
},
{
"Name": "WithRequestHeader",
"Args": {
"headerName": "Connection"
}
},
{
"Name": "WithRequestHeader",
"Args": {
"headerName": "Content-Length",
"propertyName": "RequestLength"
}
}
],
}
}
注意
要将记录的标头包含在 OutputTemplate
中,如果未设置日志属性名称,应使用不带 -
的标头名称。例如,如果标头名称是 User-Agent
,则应使用 UserAgent
。
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.Enrich.WithRequestHeader("User-Agent")
.WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss}] {Level:u3} {UserAgent} {Message:lj}{NewLine}{Exception}")
安装到 ASP.NET Core Web 应用程序中
您需要注册 IHttpContextAccessor
单例,以便富集器可以访问请求的 HttpContext
以提取客户端 IP 和客户端代理。为了让此富集器按预期工作,您的 Startup
类应该包含以下内容。
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Serilog;
namespace MyWebApp
{
public class Startup
{
public Startup()
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss}] {Level:u3} CLient IP: {ClientIp} Correlation Id: {CorrelationId} header-name: {headername} {Message:lj}{NewLine}{Exception}")
.Enrich.WithClientIp()
.Enrich.WithCorrelationId()
.Enrich.WithRequestHeader("header-name")
.Enrich.WithRequestHeader("another-header-name", "SomePropertyName")
.CreateLogger();
}
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddHttpContextAccessor();
// ...
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
// ...
loggerFactory.AddSerilog();
// ...
}
}
}
产品 | 版本 兼容的和额外的计算目标框架版本。 |
---|---|
.NET | net6.0 兼容。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 兼容。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 兼容。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。 |
NuGet 包 (40)
显示依赖 Serilog.Enrichers.ClientInfo 的前 5 个 NuGet 包
包 | 下载 |
---|---|
SuchenExpert.Core.Common
此包适用于 SuchenExpert 项目 |
|
KAM.Aether.SharedLibraries
KAM.Aether.SharedLibraries 和 SharedModels |
|
Farsica.Framework
Asp.net Core 应用程序框架 |
|
FFCEI.Microservices
一个用于ASP.NET Core 6+ 微服务开发的免费库,包含模型、模型仓储、Entity Framework Core 以及常见的Web Api特性,如CORS、JSON序列化修复、Swagger生成和JWT身份验证,以实现简单和客观的微服务开发。 |
|
IntelWash.BaseAPI.Common
包描述 |
GitHub 仓库 (5)
显示依赖于 Serilog.Enrichers.ClientInfo 的前5个最受欢迎的GitHub仓库。
仓库 | 星级 |
---|---|
featbit/featbit
一个用.NET编写的功能标志服务
|
|
neozhu/CleanArchitectureWithBlazorServer
这是一个遵循干净架构原则创建Blazor Server仪表板应用的仓库
|
|
specklesystems/speckle-sharp
.NET SDK、模式及连接器:Revit、Rhino、Grasshopper、Dynamo、ETABS、AutoCAD、Civil3D 等。
|
|
neozhu/visitormanagement
帮助管理因各种原因到机构访问的访客。它允许访客通过数字签到消除繁琐的注册和其他文件。此外,它还跟踪校园内每个人的活动时间和情况。机构有安保人员将详细信息输入某些笔记本以保持日志,这实际上是难以协调的。对于访客来说,在门口站立并提供访问详情真是太不舒适了。为了简化注册、入门、离门和时间跟踪及记录历史,这个VMS非常有用!!
|
|
Corsinvest/cv4pve-admin
Corsinvest 为 Proxmox VE Web Admin 群集 - 类似于 vCenter,但适用于 Proxmox VE
|
版本 | 下载 | 最后更新 | |
---|---|---|---|
2.1.1 | 13,707 | 8/2/2024 | |
2.1.0 | 25,408 | 7/18/2024 | |
2.0.3 | 1,743,558 | 11/1/2023 | |
2.0.2 | 2,015 | 10/31/2023 | |
2.0.1 | 403,167 | 9/1/2023 | |
2.0.0 | 406,163 | 6/30/2023 | |
1.3.0 | 538,498 | 6/1/2023 | |
1.2.0 | 2,886,418 | 6/26/2022 | |
1.1.4 | 2,221,727 | 8/22/2021 | |
1.1.4-dev01 | 929 | 8/22/2021 | |
1.1.3 | 1,594,660 | 12/18/2020 | |
1.1.2 | 127,484 | 12/7/2020 | |
1.1.1 | 1,286 | 12/6/2020 | |
1.1.0 | 134,051 | 4/23/2020 | |
1.0.0 | 19,811 | 1/5/2020 |
修复#39 - ClientIpEnricher 忽略了更新后的 HttpContext.Connection.RemoteIpAddress