アプリケーションにファイルへのロギング機能を持たせたいと思ったので、デフォルトの.NET Core 2.2ロギングフレームワーク以上のものを探し始めました。私はセリログがその仕事をするかもしれないのを見ます。ただし、依存性注入を使用して.NET Core ConsoleアプリケーションでSerilogをセットアップする方法に関するドキュメントは見つかりません。私が目にするのはASP.NETの資料だけで、おそらく私が必要としているものではありません。
自分で始めました。インストールしました(Nuget):
- セリログ
- Serilog.Extensions.Logging
- Serilog.Sinks.File
- Serilog.Sinks.Console(すべてのログにSerilogを使用するため)
の拡張機能を作成しましたServiceCollection
public static void AddLogging(this IServiceCollection services, Microsoft.Extensions.Logging.LogLevel logLevel)
{
var serilogLogger = new LoggerConfiguration()
.WriteTo.Console()
.WriteTo.File("log.txt")
.CreateLogger();
services.AddLogging(builder =>
{
builder.SetMinimumLevel(logLevel);
builder.AddSerilog(logger: serilogLogger, dispose: true);
});
}
ただし、ロギングは機能します。
- ログレベルは私が設定したものではありません。デバッグしたいのですが、serilogがINFOレベルを使用しているようです。なぜ私の設定が尊重されないのですか?結局、私はまだNET Coreのログフレームワークを使用しているので、ログレベルを設定するためにそれを使用しています。
- 私は実際にこの設定を正しく行っていますか?ある
dispose
べきかどうか本当にわかりませんtrue
。一般的に、NET CoreのDependency Injectionフレームワークでサービスの処理を処理してほしい。
builder.SetMinimumLevel
設はSerilogの設定よりも高いprioritを持っています。したがって、Serilogで詳細ログを設定し、Microsoftログで実際に必要なレベルを設定して、必要なものを取得できます。ASP.NETなどのホストされたアプリケーションを使用しているようです。おそらく、Serilog.AspNetCoreパッケージを使用しています。私の場合、ホストがありません。