Entity Framework 7を使用してクエリをログに記録する方法

entity-framework entity-framework-core

質問

夜間のビルドチャンネルでEntity Framework 7を使用しています(今はバージョンEntityFramework.7.0.0-beta2-11524を使用しています)、EFが好奇心から生成するクエリをログに記録しようとしています。

私は簡単なコンソールプログラムを書いていますが、 DbContext.Database.Logが使用するのと同じログ技術を使用しようとしましたが、 DbContext.Database.LogはEntity Framework 7では使用できません。ログを記録する方法はありますか、 EF7?

受け入れられた回答

EF7を使っている人にとっては、上記のどれも私のために働いていませんでした。しかし、これは私がそれを働かせる方法です。 (@avi cherryのコメントから)

あなたのStartup.csでは、proablyその中の構成の束で構成する方法があります。それは以下のようになります(あなたのものに加えて)。

    public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
    {
        //this is the magic line
        loggerFactory.AddDebug(LogLevel.Debug); // formerly LogLevel.Verbose

        //your other stuff

    }

人気のある回答

このコードを使用してコンソールにログすることができます。後ほど簡単なapiでラップされると確信しています:

using System;
using Microsoft.Data.Entity.Infrastructure;
using Microsoft.Data.Entity.Utilities;
using Microsoft.Framework.Logging;

public static class SqlCeDbContextExtensions
{
    public static void LogToConsole(this DbContext context)
    {
        var loggerFactory = ((IAccessor<IServiceProvider>)context).GetService<ILoggerFactory>();
        loggerFactory.AddProvider(new DbLoggerProvider());
    }
}

DbLoggerProviderはここで実装されています: https : //github.com/ErikEJ/EntityFramework7.SqlServerCompact/tree/master/src/Provider40/Extensions/Logging



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ