#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.