ABP框架 将EntityFrameworkCore生成的SQL语句输出到控制台
作者:互联网
首先 在 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:我会经常修改 不希望被转载!
标签:MyLoggerFactory,Microsoft,ABP,EntityFrameworkCore,SQL,new,LoggerFactory,true,opt 来源: https://www.cnblogs.com/WNpursue/p/ABP-USE-UseLoggerFactory-ILoggerFactory.html