エンティティフレームワークコアを使用するコンソール.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クエリが含まれていると。しかし、ここでは一例です:
は(のみデバッグログレベルでそれらをログ)のログ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]
私は完全にコンテキスト/ソースを除外するために管理してきました: ' ' .Filter.ByExcluding(Matching.FromSource(「Microsoft.EntityFrameworkCore.Storage.IRelationalCommandBuilderFactory」))が、最小レベルを設定する方法がわかりません –
コードから設定を行っている場合は、 'new LoggerConfiguration()。MinimumLevel.Information()。MinimumLevel.Override(" Microsoft.EntityFrameworkCore.Storage.IRelationalCommandBuilderFactory "、LogEventLevel.Warning)'のようなことができるはずです。 ?私は通常これをSerilog.Settings.Configurationから構成します。JSON: '{" Serilog ":{" MinimumLevel ":{"デフォルト ":"情報 "、"上書き ":{" Microsoft.EntityFrameworkCore.Storage.IRelationalCommandBuilderFactory ":"警告 " }}}} ' – mdonoughe
これらの詳細は、答えに多くの実用的価値を追加しました。 私はコードから試してみました。ありがとう!後でJSON設定を試してみましょう。また、ログオプションの外部コントロールがあるので、これが好ましい方法です。 –