zoukankan      html  css  js  c++  java
  • 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使用 !
                    });
                }
            }
    

    效果如图:

  • 相关阅读:
    delphi Base64
    delphi 注册表
    二、Spring Boot项目的三种启动方式
    Junit的运行流程以及Junit常用注解
    eclips集成单元测试
    六、AcriveMQ集群配置的三种方式,以及组合实现
    五、Sping 中实现简单实现activeMQ
    三、简单实现activeMQ发送消息
    二、安装ActiveMQ消息中间件
    一、消息中间件基础
  • 原文地址:https://www.cnblogs.com/WNpursue/p/ABP-USE-UseLoggerFactory-ILoggerFactory.html
Copyright © 2011-2022 走看看