Функция Azure: Appsetting.json не работает с Serilog.Sinks.Sumologic
Мы пытаемся реализовать ведение журнала с помощью Serilog.Sinks.SumoLogic(1.0.1) для приложений-функций Azure (без ядра.NET). Ниже приведен код и appsetting.json, которые мы используем.
Код:
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json",optional: false, reloadOnChange: true)
.Build();
var loggerFromConfig = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.CreateLogger();
Appsettings.json:
{"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"System": "Warning",
"Microsoft": "Warning"
}
},
"WriteTo": [
{
"Name": "SumoLogic",
"Args": {
"endpointUrl": "https:"
}
}
]
}
}
С вышеупомянутым appsetting мы не можем связать сумологическую раковину с loggerFromConfig
объект и _sinks = {Serilog.Core.ILogEventSink[0]}
который показывает, что не настроен приемник.
Если мы попробуем тот же код с примером проекта с зависимостью Microsoft.NET.Core.Apps, он будет работать нормально.
Похоже, appsettings.json поддерживается только основными приложениями.NET.
Пожалуйста, предложите, как написать журнал, используя Serilog с appsettings.json
(без основных приложений.NET).
1 ответ
Насколько я знаю, метод ReadFrom.Configuration используется для получения настройки из appsettings.json в основном проекте.net.
Поскольку для метода ReadFrom.Configuration необходим объект IConfiguration. Если вы хотите использовать ConfigurationBuilder, вам необходимо установить пакет Microsoft.Extensions.Configuration из Nuget.
Если вы установите этот пакет Nuget, вы можете использовать класс ConfigurationBuilder. Но он также установит пакет Microsoft.NETCore.Platforms.
На мой взгляд, правильный способ использовать Serilog в приложениях.net - это использовать метод LoggerConfiguration().WriteTo.SumoLogic.
var logger = new LoggerConfiguration().WriteTo.SumoLogic(url,
sourceName: "CustomSourceName",
sourceCategory: "CustomSourceCategory",
restrictedToMinimumLevel: LogEventLevel.Debug,
batchSizeLimit: 20,
period: TimeSpan.FromSeconds(1),
textFormatter: new RawFormatter())
Более подробно вы можете обратиться к этим кодам.
Поскольку метод ReadFrom.Configuration также считывает параметр из файла appsettings.json, а затем использует этот параметр для создания объекта LoggerConfiguration, я предлагаю вам напрямую использовать метод LoggerConfiguration().WriteTo.SumoLogic.
Кроме того, если вы все еще хотите использовать appsettings.json, я предлагаю вам прочитать настройку appsettings.json с помощью пакета Newtonsoft. Затем вы можете передать эти настройки как параметры в метод LoggerConfiguration().WriteTo.SumoLogic.