ТЛ;ДР Использовать Серилог.Синкс.Консоль для приложений 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
}
}
]
}
}
Эта конфигурация предполагает пакет Серилог.Синкс.Файл установлен.
Конфигурация для DXP
Журналы, записанные в консоль захватываются как Журналы консоли службы приложений. Эти журналы видны на портале DXP.
Для DXP вы можете упростить и оптимизировать Serilog, используя только консольный приемник, опционально завернутый в асинхронный приемник, который может улучшить или не улучшить производительность. Вот как настройки приложений.
{
"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 г.
По теме

