首页 > 解决方案 > Serilog 自定义库需要在分布式环境中捕获 RemoteIP 和 remoteUSer

问题描述

我已经使用 serilog 包创建了一个通用自定义库,这里的想法是所有应用程序都应该使用这个自定义库而不是直接使用 serilog,以便在一个地方发生变化,我想捕获远程 IP、远程用户 [authenticated] 和co-relationID,如何在自定义库中编码,下面是我的代码。

  public class SerilogLogger: ISerilogLogger
    {        
        public static void CreateInstance(IConfiguration config)
        {
            Log.Logger=new LoggerConfiguration()
           .ReadFrom.Configuration(config)
           .Enrich.WithEnvironmentUserName()
           .Enrich.WithMachineName()           
           .CreateLogger();
        }
}

应用程序从 appsettings.json 文件发送自定义配置

 "Serilog": {
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Default": "Information",
        "Microsoft": "Error",
        "System": "Error"
      }
    },
    "WriteTo": [

      {
        "Name": "File",
        "Args": {
          "path": "C:\\Users\\Documents\\Important\\log.json",
          //"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.ffff}|{TenantName}|{RequestId}|{SourceContext}|{Level:u3}|{Message:lj}{NewLine}{Exception}",
          "rollOnFileSizeLimit": true,
          "retainedFileCountLimit": 20,
          "rollingInterval": "Day",
          "restrictedToMinimumLevel": "Information",
          "fileSizeLimitBytes": 1,
          // "textformatter": "SerilogManager.Formatter.ElasticsearchJsonFormatter",
          "formatter": "Serilog.Formatting.Json.JsonFormatter, Serilog"
        }
      }
    ]
  }
}

标签: c#elasticsearchserilog

解决方案


推荐阅读