Увеличьте свои свойства констант Serilog в appsettings.json

Журналирование — это важный аспект любого приложения, позволяющий разработчикам собирать и анализировать информацию времени выполнения для устранения неполадок и мониторинга. Serilog — популярная библиотека журналирования в экосистеме.NET, известная своей гибкостью и расширяемостью. В этой статье мы рассмотрим, как расширить свойства констант Serilog с помощью файла конфигурации appsettings.json. Мы рассмотрим различные методы и предоставим примеры кода, которые помогут вам максимально эффективно использовать возможности ведения журналов.

Метод 1: использование ConfigurationBuilder
Класс ConfigurationBuilder в.NET предоставляет удобный способ чтения значений конфигурации из различных источников, включая файл appsettings.json. Чтобы обогатить свойства констант Serilog, вы можете использовать этот класс для загрузки конфигурации и извлечения нужных значений.

Вот пример того, как этого можно добиться:

using Microsoft.Extensions.Configuration;
var configuration = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json")
    .Build();
Log.Logger = new LoggerConfiguration()
    .Enrich.WithProperty("ConstantProperty", configuration["ConstantProperty"])
    .WriteTo.Console()
    .CreateLogger();

В этом примере мы загружаем файл appsettings.json и получаем значение ключа ConstantProperty. Затем мы используем метод Enrich.WithProperty, чтобы обогатить регистратор Serilog этим постоянным свойством.

Метод 2: раздел настраиваемой конфигурации
Другой подход заключается в создании раздела настраиваемой конфигурации в файле appsettings.json специально для свойств констант Serilog. Этот метод обеспечивает более четкое разделение задач и упрощает управление настройками, связанными с журналированием.

Вот пример того, как можно определить пользовательский раздел и получить доступ к его значениям:

{
  "Serilog": {
    "ConstantProperties": {
      "ConstantProperty": "SomeValue"
    }
  }
}
using Microsoft.Extensions.Configuration;
var configuration = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json")
    .Build();
var serilogConfiguration = configuration.GetSection("Serilog:ConstantProperties");
Log.Logger = new LoggerConfiguration()
    .ReadFrom.Configuration(configuration)
    .Enrich.WithProperty("ConstantProperty", serilogConfiguration["ConstantProperty"])
    .WriteTo.Console()
    .CreateLogger();

В этом примере мы определяем раздел «Serilog» в файле appsettings.json, содержащий подраздел «ConstantProperties». Затем мы извлекаем значения с помощью метода GetSectionи соответствующим образом обогащаем регистратор Serilog.

Метод 3: переменные среды
Использование переменных среды — это гибкий подход, когда дело доходит до настройки свойств констант Serilog. Установив переменные среды, вы можете легко изменить режим ведения журнала, не изменяя файл appsettings.json.

Вот пример использования переменных среды:

var constantPropertyValue = Environment.GetEnvironmentVariable("CONSTANT_PROPERTY");
Log.Logger = new LoggerConfiguration()
    .Enrich.WithProperty("ConstantProperty", constantPropertyValue)
    .WriteTo.Console()
    .CreateLogger();

В этом примере мы получаем значение переменной среды «CONSTANT_PROPERTY» с помощью Environment.GetEnvironmentVariableи обогащаем журнал Serilog на основе этого значения.

Расширение свойств констант Serilog с помощью файла конфигурации appsettings.json предоставляет мощный способ настройки ведения журнала. Используя ConfigurationBuilder, пользовательские разделы конфигурации и переменные среды, вы можете легко управлять этими свойствами и изменять их, не меняя код приложения. Понимание этих методов позволит вам максимально эффективно использовать гибкость Serilog и расширить возможности ведения журналов.