2017-02-07 5 views
5

エンティティフレームワークコアを使用するコンソール.netコアアプリケーションがあります。 アプリは、ファイルやコンソールへの書き込みにロギングフレームワークを使用しています:ファイル出力のためのEntity FrameworkコアのSQLクエリーを抑制する

serviceProvider = new ServiceCollection() 
     .AddLogging() 
     .AddDbContext<DataStoreContext>(options => 
      options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))) 
     .BuildServiceProvider(); 

    //configure console logging 
    serviceProvider.GetService<ILoggerFactory>() 
     .AddConsole(LogLevel.Debug) 
     .AddSerilog(); 

    Log.Logger = new LoggerConfiguration() 
     .MinimumLevel.Information() 
     .WriteTo.RollingFile(Path.Combine(Directory.GetCurrentDirectory(), "logs/vcibot-{Date}.txt")) 
     .WriteTo.RollingFile(Path.Combine(Directory.GetCurrentDirectory(), "logs/vcibot-errors-{Date}.txt"), LogEventLevel.Error) 
     .CreateLogger(); 

    logger = serviceProvider.GetService<ILoggerFactory>() 
     .CreateLogger<Program>(); 

分レベルを情報に設定されています。このセットアップ出力もSQLクエリが含まれていると。しかし、ここでは一例です:

2017年2月6日10:31:38.282 -08:00 [情報]実行されたDbCommand(0msと) 【パラメータ= []、 CommandType = 'Text'、CommandTimeout = '30 '] [] [BuildIdentifier]、[f]。[Branch]、[f]。[BuildDate]、 [f]。[StaticAssetSizeInKb] FROM [FileSizesHistoryEntries] [F]

は(のみデバッグログレベルでそれらをログ)のログSQLクエリ

答えて

3

あなたが欲しいのを無効にする方法はありますAS Microsoft.EntityFrameworkCore.Storage.IRelationalCommandBuilderFactoryコンテキストの最小レベルをWarning以上に設定するには、Serilog設定を変更してください。

出力テンプレートを[{Timestamp:HH:mm:ss} {SourceContext} [{Level}] {Message}{NewLine}{Exception}のように設定すると、変更が必要なコンテキストを見つけることができます。コンテキストを知ったら、テンプレートを元の状態に戻すことができます。

+0

私は完全にコンテキスト/ソースを除外するために管理してきました: ' ' .Filter.ByExcluding(Matching.FromSource(「Microsoft.EntityFrameworkCore.Storage.IRelationalCommandBuilderFactory」))が、最小レベルを設定する方法がわかりません –

+1

コードから設定を行っている場合は、 'new LoggerConfiguration()。MinimumLevel.Information()。MinimumLevel.Override(" Microsoft.EntityFrameworkCore.Storage.IRelationalCommandBuilderFactory "、LogEventLevel.Warning)'のようなことができるはずです。 ?私は通常これをSerilog.Settings.Configurationから構成します。JSON: '{" Serilog ":{" MinimumLevel ":{"デフォルト ":"情報 "、"上書き ":{" Microsoft.EntityFrameworkCore.Storage.IRelationalCommandBuilderFactory ":"警告 " }}}} ' – mdonoughe

+0

これらの詳細は、答えに多くの実用的価値を追加しました。 私はコードから試してみました。ありがとう!後でJSON設定を試してみましょう。また、ログオプションの外部コントロールがあるので、これが好ましい方法です。 –

関連する問題