1763152138
2025-11-12 12:42:00
TL;DR 使用 Serilog.シンク.コンソール DXP アプリの場合 — または、Serilog を完全にスキップして、デフォルトのログに依存します。
調査中に、PaaS ポータルからダウンロード可能なログがすべて空であることがよくあります。
ほとんどの場合、これは Serilog が使用され、ログをファイルにのみ書き込むように構成されているために発生します。これはローカルまたは従来のホスティング環境では機能しますが、Optimizely DXP がログを処理する方法とはうまく連携しません。
理解することが重要なこと (明確に定義されていない可能性があります) ドキュメント)PaaS ポータルで利用可能なログは次のとおりです。 App Service コンソールのログ ファイルベースのログではありません。
Serilog をローカル開発またはデバッグに使用することが目的の場合は、 財団プロジェクト。この構成は DXP ではまったく問題なく機能します。
開発とDXPの両方にSerilogを実装する
以下に、その方法の例を示します。 プログラム クラスは見ることができます。それは、 ブートストラップロガー これにより、ホストが完全に構築される前でもログを利用できるようになり、後で 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 パッケージが必要です セリログ、 Serilog.AspNetCore そして Serilog.シンク.コンソール がインストールされています。
開発用の構成
開発中は、トラブルシューティングのためにコンソールとローカル ファイルに書き込まれたログの両方を確認したい場合があります。
あなたの appsettings.開発.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
}
}
]
}
}
この構成はパッケージを前提としています。 Serilog.Sinks.ファイル がインストールされています。
DXPの構成
に書き込まれるログ コンソール として捕捉されます App Service コンソールのログ。これらは、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.シンク.非同期 そして Serilog.シンク.コンソール がインストールされています。
この設定を使用すると、Optimizely DXP でログが正しくキャプチャされることを保証しながら、Serilog の構造化ログの利点をすべて享受できます。
2025 年 11 月 12 日
#DXP #での #Serilog #の使用 #Optimizely #開発者コミュニティ