.NETのコアは、どのようにログにLINQのSQL文によって生成されたEntity Frameworkのコアレコードを作るのだろうか?






使用して
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)。
        }

 

おすすめ

転載: www.cnblogs.com/lyl6796910/p/11241071.html