Пользовательская библиотека Serilog необходима для захвата RemoteIP и удаленного пользователя в распределенной среде

#c# #elasticsearch #serilog

Вопрос:

Я создал одну общую пользовательскую библиотеку с использованием пакета serilog, идея здесь в том, что все приложения должны использовать эту пользовательскую библиотеку вместо прямого использования serilog, чтобы в одном месте произошли изменения, я хочу захватить удаленный IP-адрес, удаленного пользователя[аутентифицированного] и идентификатор связи, как закодировать это в пользовательской библиотеке, ниже приведен мой код.

   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"
        }
      }
    ]
  }
}
 

Комментарии:

1. IP-соединение (TCP) не содержит информации об аутентификации. Вы можете использовать роли в HTTP-соединении. См.: docs.microsoft.com/en-us/aspnet/web-forms/overview/…

2. @jdweng Я ищу решение в библиотеке, использующей serilog, я могу добиться того же непосредственно с помощью пакета serilog.