使用してdotNET.Coreを。
使用してMicrosoft.Extensions.Loggingを。 使用してシステムを。 使用してSystem.Collections.Genericを。 使用したSystem.Diagnosticsを。 使用してSystem.Textのを。 名前空間dotNET.EFCoreRepository { /// <要約> /// EF日志 /// </要約> パブリック クラスEFLoggerProvider:ILoggerProvider { 公共 ILoggerですCreateLogger(文字列カテゴリ名)=> 新しいEFLogger(カテゴリ名)。 公共 ボイド廃棄(){} } /// <要約> /// /// </要約> パブリック クラスEFLogger:ILoggerです { プライベート 読み取り専用 の文字列区分名。 公共 EFLogger(文字列カテゴリ名)=> この .categoryName = カテゴリ名。 パブリック ブールでIsEnabled(ログレベルLOGLEVEL)=> 真; 公共 のボイドログ<TSTATE>(ログレベルのログレベルでEventIdイベントID、TSTATE状態、例外例外、のFunc <TSTATE、例外、文字列 > フォーマッタ) { //カテゴリ名は、ときに、データベースクエリEFコアMicrosoft.EntityFrameworkCore.Database.Command、ログレベル情報行う IF(カテゴリ名== " Microsoft.EntityFrameworkCore.Database.Commandを" ログレベル== && LogLevel.Information) { VARの logContent = フォーマッタ(状態、例外); NLogger.Debug(logContent); // TraceMessageを( "何かが起こった。"); // NLogger.Info(GetCodeLineAndFileName()); // TODO:ログの内容を取得する方法を再生する方法で再生したかった コンソールを。 WriteLineメソッド(); Console.ForegroundColor = ConsoleColor.Green。 Console.WriteLineを(logContent)。 Console.ResetColor(); } } パブリック IDisposableをBeginScope <TSTATE>(TSTATE状態)=> ヌル。 公共 のボイド TraceMessage(文字列メッセージ、 [System.Runtime.CompilerServices.CallerMemberName] 列 memberNameの= "" 、 [System.Runtime.CompilerServices.CallerFilePath] 列 sourceFilePath = "" 、 [System.Runtime.CompilerServices.CallerLineNumber] int型sourceLineNumber = 0 ) { NLogger.Debug(" メッセージ:" + メッセージ)。 NLogger.Debug(" メンバー名:" + memberNameの); NLogger.Debug(" ソースファイルパス:" + sourceFilePath)。 NLogger.Debug(" ソース行番号:" + sourceLineNumber)。 } パブリック 文字列GetCodeLineAndFileName() { のStackTrace insStackTrace = 新しいですStackTrace(真の); VAR insStackFrames = insStackTrace.GetFrames()。 文字列str = "" ; foreachの(VARの insStackFrame でinsStackFrames) { STR + = String.Formatの(" \ NFILE:{0}、ライン:{1} \ n " 、insStackFrame.GetFileName()、insStackFrame.GetFileLineNumber())。 } 戻りSTR。 } } }
最初のステップ:Logクラスを追加します。
ステップ2:コールログを追加するOnConfiguring方法
保護された オーバーライド ボイドOnConfiguring(DbContextOptionsBuilder optionsBuilder) { VARの loggerFactory = 新しいLoggerFactory()。 loggerFactory.AddProvider(新しいEFLoggerProvider()); optionsBuilder.UseLoggerFactory(loggerFactory)。 ベース.OnConfiguring(optionsBuilder)。 }