Serilog Именованная Строка Соединения - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь настроить 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.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 04 февраля 2019

У меня была такая же проблема. Установка последних пакетов dev решила это для меня:

Install-Package Serilog.Settings.Configuration -version 3.0.2-dev-00187 
Install-Package Serilog.Sinks.MSSqlServer -version 5.1.3-dev-00232
...