ロギング
Oracle EF Coreは、EF Coreのロギング・メカニズムと直接統合されています。Oracle EF Coreのログは、DbLoggerCategory
クラスおよびLogLevel
列挙を使用してフィルタ処理されます。
次のDbLoggerCategory
プロパティを使用して、ログをフィルタ処理できます。
-
Database
-
Database.Command
-
Database.Connection
-
DbLoggerCategory.Infrastructure
-
Migrations
-
Model
-
Model.Validation
-
Query
-
Scaffolding
-
Update
次のLogLevel
プロパティを使用できます。
-
Debug
: 入力および出力トレースが表示されます。実行されたSQL、表および列メタデータ、マッピングなどの主要なOracle EF Coreアクティビティおよびメタデータも表示されます。 -
Error
: スタック・トレースなど、エラーに関連する情報が表示されます。 -
None
DebugLoggerProvider
を使用してロギングを設定するには、プロジェクトにMicrosoft.Extensions.Logging.Debug.dll
アセンブリを含めます。同様に、ConsoleLoggerProvider
を使用してロギングを設定するには、プロジェクトにMicrosoft.Extensions.Logging.Console.dll
アセンブリを含めます。その後、プロジェクトに次のネームスペースを追加します。
using Microsoft.Extensions.Logging;
次に、ロガー・ファクトリを使用するようにDbContext
を構成します。
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseOracle(@<connection string>) .UseLoggerFactory(_myLoggerFactory); }
最後に、ログに書き込むDbLoggerCategory
およびLogLevel
プロパティを設定します。コード優先シナリオでは、次のLoggerFactory
を作成できます。
public static readonly Microsoft.Extensions.Logging.ILoggerFactory _myLoggerFactory = new LoggerFactory(new[] { new Microsoft.Extensions.Logging.Debug.DebugLoggerProvider((category, level) => // category == DbLoggerCategory.Database.Name && // Filter the logs based on DbLoggerCategory. Comment this line above if you do not want to filter logs based on DbLoggerCategory. level >= LogLevel.Trace // Filter the logs based on LogLevel. All levels greater than or equal to "Trace" will be enabled. Comment this line above if you do not want to filter logs based on LogLevel. ) });
移行シナリオでは、次のLoggerFactory
を作成できます。
public static readonly Microsoft.Extensions.Logging.ILoggerFactory _myLoggerFactory = new LoggerFactory(new[] { new Microsoft.Extensions.Logging.Console.ConsoleLoggerProvider((category, level) => // category == DbLoggerCategory.Database.Name && // Filter the logs based on DbLoggerCategory. Comment this line above if you do not want to filter logs based on DbLoggerCategory. level >= LogLevel.Trace // Filter the logs based on LogLevel. All LogLevels greater than and equal to "Trace" will be enabled. Comment this line above if you do not want to filter logs based on LogLevel. , false, false) });
スキャフォールディング・シナリオでは、-verbose
オプションを使用してトレースを生成します。
Scaffold-DbContext .. -verbose