web-dev-qa-db-ja.com

EF Core2とNlogを使用して生成されたSQLをログに記録する

生成されたSQLをasp.netコア2とEntityFrameworkCore2でログに記録する方法と、それを実行する正しい方法に少し混乱しています。

MSドキュメントからthis link を読んだ後、.UseLoggerFactory(<LoggerFactory>)を使用してstartup.csのサービス構成中に追加する必要があると言っています。

ただし、ロガーを追加しようとするとこのメッセージが表示されるため、これは古くなっているようです。

Visual Studio 2017 Message for UseLoggerFactory

デバッグ目的でSQLをログに記録するロガーを追加する最良の方法を誰かに教えてもらえますか?

また、組み込みのロギング機能ではなく、今後すべてのロギングにNlogを使用する予定です。これに対するアプローチ(デフォルトのMSインスタンスの代わりにNlog loggerfactoryが注入される)は同じであるか、何かありますか。構成の違い(NLogの使用に関して)?

7
Matthew Flynn

公式ドキュメント の説明に従って、最初にNLogを登録します。

次に、ILoggerFactoryクラスにStartupを挿入します

private readonly ILoggerFactory _factory;
public Startup(IHostingEnvironment env, ILoggerFactory factory)
{ 
     _factory = factory ?? throw new ArgumentNullException(nameof(factory)); 
}

最後に、ファクトリをロガーファクトリとしてリンクしてDbContextに使用します

public void ConfigureServices(IServiceCollection services)
{
     services.AddDbContext<YourContext>(options => { options.UseLoggerFactory(_factory); });
}

EFコアステートメントは、NLogを使用してログに記録されるようになりました enter image description here

5
emp