首先 在 EntityFrameworkCore中安裝 Microsoft.Extensions.Logging.Console 按照官方文檔 使用UseLoggerFactory 方法 (地址:https://docs.microsoft.com/zh-cn/ef/core/miscellaneo ...
首先 在 EntityFrameworkCore中安裝 Microsoft.Extensions.Logging.Console
nuget install Microsoft.Extensions.Logging.Console
按照官方文檔 使用UseLoggerFactory 方法 (地址:https://docs.microsoft.com/zh-cn/ef/core/miscellaneous/logging)
安裝相應的程式包之後, 該應用程式應創建 LoggerFactory 的單一實例/全局實例。 例如,使用控制台記錄器:
public static readonly LoggerFactory MyLoggerFactory = new LoggerFactory(new[] {new ConsoleLoggerProvider((_, __) => true, true)});
然後,應該在 DbContextOptionsBuilder 上向 EF Core 註冊此單一實例/全局實例。 例如:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => optionsBuilder .UseLoggerFactory(MyLoggerFactory) // Warning: Do not create a new ILoggerFactory instance each time .UseSqlServer( @"Server=(localdb)\mssqllocaldb;Database=EFLogging;Trusted_Connection=True;ConnectRetryCount=0");
篩選SQL內容
篩選所記錄內容的最簡單方法是在註冊 ILoggerProvider 時對其進行配置。 例如:
public static readonly LoggerFactory MyLoggerFactory = new LoggerFactory(new[] { new ConsoleLoggerProvider((category, level) => category == DbLoggerCategory.Database.Command.Name && level == LogLevel.Information, true) });
文檔提醒:
下麵的代碼示例使用ConsoleLoggerProvider已過時版本 2.2 中的構造函數。 適當替換已過時的日誌記錄 Api 將在版本 3.0 中提供。 在此期間,則可以安全地忽略,並禁止顯示警告。
錯誤可以忽略,.net core 3.0 api會發生改變,這種方法只能在2.0使用!
在此示例中,篩選日誌以僅返回以下位置的消息:
在 Microsoft.EntityFrameworkCore.Database.Command 類別中
在信息級別
對於 EF Core 記錄器類別在中定義DbLoggerCategory類,以便可以方便地查找類別,但這些解析為簡單的字元串。
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Console; public static readonly LoggerFactory MyLoggerFactory = new LoggerFactory(new[] { new ConsoleLoggerProvider((category, level) => category == DbLoggerCategory.Database.Command.Name && level == LogLevel.Information, true) }); public override void PreInitialize() { if (!SkipDbContextRegistration) { Configuration.Modules.AbpEfCore().AddDbContext(options => { if (options.ExistingConnection != null) { AbpVueDbContextConfigurer.Configure(options.DbContextOptions, options.ExistingConnection); } else { AbpVueDbContextConfigurer.Configure(options.DbContextOptions, options.ConnectionString); } options.DbContextOptions.UseLoggerFactory(MyLoggerFactory); options.DbContextOptions.EnableSensitiveDataLogging(true); //logging 不加密 development使用 ! }); } }
效果如圖:
pass:我會經常修改 不希望被轉載!