何らかの理由で、Serilog構成で何が起こっているのかを理解するのは非常に難しいと感じています。 .NET Core 2.1でWeb APIを使用し、serilog.sink.logstash
をインストールしました。私のスタートアップは:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
var serverURL = Configuration.GetSection("Logging")["logstashServer"];
var logger = new LoggerConfiguration()
.Enrich.FromLogContext()
.Enrich.WithProperty("Enviroment", env.EnvironmentName)
.Enrich.WithProperty("ApplicationName", "MyApp")
.WriteTo.LogstashHttp(serverURL);
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
logger.WriteTo.Console();
}
loggerFactory.AddSerilog();
Log.Logger = logger.CreateLogger();
app.UseCors("CorsPolicy");
app.UseMvc();
}
私のappsettingsにはセクションがあります:
"Logging": {
"logstashServer": "http://192.168.0.6:8101",
"IncludeScopes": false,
"Serilog": {
"MinimumLevel": {
"Default": "Error",
"Override": {
"Microsoft": "Error",
"Microsoft.AspNetCore.Hosting": "Error",
"Microsoft.AspNetCore.Mvc": "Error",
"System": "Error"
}
}
}
}
私が何をしても、多くの不要な情報が次のように記録されるよりも、コンソールとlogstashの両方に表示されます。
[14:27:54 INF]アクションメソッドMyApp.Controllers.LoggerController.Post(MyApp)を実行し、結果Microsoft.AspNetCore.Mvc.OkResultを0.0771msで返しました。
MyApp> [14:27:54 INF] HttpStatusCodeResultの実行、HTTPステータスコード200の設定
MyApp> [14:27:54 INF] 2.0855msで実行されたアクションMyApp.Controllers.LoggerController.Post(MyApp)
等々。最小レベルのエラーがあるのに、なぜそれらを見るのですか?
Serilogのログレベルをオーバーライドするための構成をappsettings.json
に追加しましたが、実際には、その構成をSerilogに渡していません。最も単純なレベルでは、これには Serilog.Settings.Configuration nugetパッケージをインストールする必要があります。それが終わったら、次のようにReadFrom.Configuration
への呼び出しを追加できます。
var logger = new LoggerConfiguration()
.ReadFrom.Configuration(Configuration.GetSection("Logging"))
.Enrich.FromLogContext()
// ...
構成をSerilogに取り込むために必要なのはこれだけです。ただし、ILoggerFactory
内でConfigure
を使用している方法には他の問題があります( これはASP.NETで変更されましたコア2. )。これが原因である可能性が高い問題の1つは、ASP.NET CoreのコンソールプロバイダーとSerilogコンソールシンクの両方がログを書き込むことです。そのいずれかでヘルプが必要な場合は、オンラインで十分に文書化されていますが、絶対に必要な場合は追加のStack Overflow質問を作成できます。
Nicholas Blumhardt blogged ASP.NET Core 2.0のロギングの変更について-これは、Serilog + ASP.NET Coreのエクスペリエンスを大幅に簡素化するのに役立つ有用な資料です。
Serilogon。NET Core 2.1APIプロジェクト、私は この記事 が非常に便利だとわかりました。
構成ファイルについては、Serilog GitHubリポジトリに Serilog.Settings.Configuration パッケージに関する特定のページがあります。