Использование Serilog в DXP | Сообщество разработчиков Optimizely

ТЛ;ДР Использовать Серилог.Синкс.Консоль для приложений DXP — или полностью пропустите Serilog и используйте ведение журнала по умолчанию.


Во время расследований все загружаемые журналы с портала PaaS часто оказываются пустыми.

В большинстве случаев это происходит потому, что Serilog используется и настроен только на запись журналов в файлы. Хотя это работает локально или в традиционных средах хостинга, это не очень хорошо сочетается с тем, как Optimizely DXP обрабатывает журналы.

Что важно понимать (возможно, нечетко определено в документация) заключается в том, что журналы, доступные на портале PaaS, Журналы консоли службы приложений а не файловые журналы.

Если ваша цель — использовать Serilog для локальной разработки или отладки, вы можете просто следовать настройке, использованной в Проект фонда. Эта конфигурация прекрасно работает для DXP.

Внедрение Serilog как для разработки, так и для DXP

Ниже приведен пример того, как Программа класс можете посмотреть. Он использует начальный регистратор во время запуска, что гарантирует, что ведение журнала доступно даже до полной сборки хоста, в то же время позволяя Serilog загружать свои настройки из конфигурации позже.

public class Program
{
    public static void Main(string[] args)
    {
        Log.Logger = new LoggerConfiguration()
            .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
            .WriteTo.Console()
            .CreateBootstrapLogger();


        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureCmsDefaults()
            .UseSerilog((context, services, configuration) =>
            {
                configuration
                    .ReadFrom.Configuration(context.Configuration)
                    .ReadFrom.Services(services)
                    .Enrich.FromLogContext();
            })
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup();
            });
}

Для этой настройки требуются пакеты NuGet. Серилог, Серилог.AspNetCore и Серилог.Синкс.Консоль установлены.

Конфигурация для разработки

При разработке вам может потребоваться просмотреть журналы как в консоли, так и записать их в локальный файл для устранения неполадок.

Твой appsettings.Development.json может выглядеть так:

{
  "Serilog": {
    "Using": ["Serilog.Sinks.Console", "Serilog.Sinks.File"],
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Warning",
        "EPiServer": "Information",
        "EPiServer.Commerce": "Warning",
        "Microsoft.Hosting.Lifetime": "Warning",
        "MySite.SomeNamespace": "Information"
      }
    },
    "WriteTo": [
      { "Name": "Console" },
      {
        "Name": "File",
        "Args": {
          "path": "app_data/log.txt",
          "rollingInterval": "Day",
          "retainedFileCountLimit": 10
        }
      }
    ]
  }
}

Эта конфигурация предполагает пакет Серилог.Синкс.Файл установлен.

Read more:  Данные являются частью продукта в каждой онлайн-транзакции.

Конфигурация для DXP

Журналы, записанные в консоль захватываются как Журналы консоли службы приложений. Эти журналы видны на портале DXP.

Для DXP вы можете упростить и оптимизировать Serilog, используя только консольный приемник, опционально завернутый в асинхронный приемник, который может улучшить или не улучшить производительность. Вот как настройки приложений..json может выглядеть так:

{
  "Serilog": {
    "Using": ["Serilog.Sinks.Async", "Serilog.Sinks.Console"],
    "MinimumLevel": {
      "Default": "Warning",
      "Override": {
        "Microsoft": "Warning",
        "EPiServer": "Warning",
        "EPiServer.Commerce": "Warning",
        "Microsoft.Hosting.Lifetime": "Information",
        "MySite.SomeNamespace": "Information"
      }
    },
    "WriteTo": [
      {
        "Name": "Async",
        "Args": {
          "configure": [
            { "Name": "Console" }
          ]
        }
      }
    ]
  }
}

Конфигурация предполагает, что Серилог.Синкс.Асинк и Серилог.Синкс.Консоль установлены.


Благодаря этой настройке вы сможете воспользоваться всеми преимуществами структурированного ведения журналов Serilog, гарантируя при этом, что журналы по-прежнему будут правильно записываться в Optimizely DXP.

12 ноября 2025 г.

По теме

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.