Я пытаюсь настроить Serilog на ядре .Net для записи в таблицу SQL, используя именованную строку подключения.Я могу заставить все работать, если поместить строку подключения непосредственно в раздел «Serilog» файла appsettings.Но я хочу, чтобы он использовал ту же строку подключения, что и Entity Framework, поэтому я не хочу определять ее дважды.Кроме того, похоже, что по соображениям безопасности рекомендуется не хранить эту информацию непосредственно в файле appsettings.
Вот соответствующая часть файла настроек:
{
"Name": "MSSqlServer",
"Args": {
"connectionString": "Development",
"schemaName": "app",
"tableName": "Logs",
"restrictedToMinimumLevel": "Information"
}
}
Строка подключения для разработкиопределены в моих «пользовательских секретах» в Visual Studio.
{
"ConnectionStrings": {
"Development": "Server=...",
"Staging": "Server=...",
"Production": "Server=..."
}
}
Как я уже говорил, если я заменю «Разработка» на фактическую строку, она работает.Я также должен добавить, что Entity Framework использует строку подключения для разработки, поэтому я вполне уверен, что сама строка хороша.
Я загружаю конфигурацию в метод Startup.Configure следующим образом
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(_configuration)
.CreateLogger();
Странно, если я вручную добавлю объект MSSqlServer тем же способом, он будет работать (после удаления раздела MSSqlServer в файле appsetting).Очевидно, что это не идеально, так как изменение любого из свойств потребует перекомпиляции приложения
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(_configuration)
.WriteTo.MSSqlServer(
connectionString: _configuration.GetConnectionString(env.EnvironmentName),
schemaName: "app",
tableName: "Logs",
restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Information
)
.CreateLogger();
Я нашел этот поток на GitHub , который говорит мне, что это может быть известной проблемой,К сожалению, кажется, что это очень мало активности, если это правда.
Я использую Serilog.AspNetCore
версия 2.1.1, Serilog.Settings.Configuration
версия 3.0.1, Serilog.Sinks.MSSqlServer
версия 5.1.2 и .Net core
версия 2.1.
Любая помощь будет принята с благодарностью.