第七节:Asp.Net Core内置日志、将EF生成的SQL输出到控制台

一. Asp.Net Core内置日志

1. 默认支持三种输出方式:控制台、调试(底部输出窗口)、EventSource,当然也可以在Program类中通过logging.ClearProviders();先删除,然后再决定加载哪种输出方式。

2. 创建ILogger对象的两种方式:

①. 通过构造函数注入,ILogger<T> 获取一个 ILogger 实例,该实例使用 T 的完全限定类型名称作为类别,如下:log

②. 通过构造函数注入ILoggerFactory,然后调用ILoggerFactory.CreateLogger,显示的指定类别,如下:log2

 

 

二. EF生成的SQL输出到控制台

1. 通过Nuget安装对应的程序集:

  【Microsoft.Extensions.Logging.Debug】    指的是调试模式下,在vs的输出窗口的输出(适用于各种类型项目的调试, Web项目调试也能有这个哦

  【Microsoft.Extensions.Logging.Console】 指的是控制台程序中输出。

2. 在EF上下文类中进行如下代码配置:

       public static readonly ILoggerFactory MyLogFactory = LoggerFactory.Create(build =>
        {
            build.AddConsole();  // 用于控制台程序的输出
            build.AddDebug();    // 用于VS调试,输出窗口的输出
        });
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseLoggerFactory(MyLogFactory);
        }

3. 测试

(1). 调试模式下:

(2). 运行控制台:

 

 

补充如何将老版的EF生成的sql语句输出控制台呢:

一句话搞定:dbContext.Database.Log = Console.Write;

 

 

 

 

 

 

 

 

 

!

  • 作       者 : Yaopengfei(姚鹏飞)
  • 博客地址 : http://www.cnblogs.com/yaopengfei/
  • 声     明1 : 本人才疏学浅,用郭德纲的话说“我是一个小学生”,如有错误,欢迎讨论,请勿谩骂^_^。
  • 声     明2 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。
 
posted @ 2019-05-11 21:08  Yaopengfei  阅读(2591)  评论(4编辑  收藏  举报