.net core学习(六).NET全新的日志功能


.NET日志的基本概念


1。日志级别: Trace<Debug<Infomation<Warning<Error<Critical

     其中Critical指的是生死相关

2。日志提供者(LoggingProvider):这个是指把日志输出到哪里。

     可以是:控制台、文件、数据库、eventlog(仅windows)等。

3。 .NET日志非常灵活,对于业务代码只要注入日志对象记录日志即可,具体哪些日志输出到哪里、什么格式、是否输出等都有配置或者初始化代码来决定。


输出到控制台


(1) 引用包:Microsoft.Extensions.Logging

   Microsoft.Extensions.Logging.Consol

(2) DI注入:

   services.AddLogging(logBuilder=>{

   logBuilder.AddConsole(); //可以多个Provider

});

(3) 需要记录日志的代码,注入ILogger<T>即可,T一般就是当前类,这个类的名字会输出到日志,方便定位错误。

然后调用LogInfomation(), LogError等方法输出不同级别的日志,还支持输出异常对象。


执行效果:

image.png


源码:

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Logging;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            ServiceCollection services=new ServiceCollection();
            services.AddLogging(s =>
            {
                s.AddConsole();
                s.SetMinimumLevel(LogLevel.Debug);
            });
            services.AddScoped<LogTest>();

            using(var sp= services.BuildServiceProvider())
            {
                var t1 = sp.GetRequiredService<LogTest>();
                t1.Run();
            }
        }
    }
}

日志需求类:

using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    public class LogTest
    {
        private readonly ILogger<LogTest> logger;
        public LogTest(ILogger<LogTest> logger)
        {
            this.logger = logger;
        }

        public void Run()
        {
            this.logger.LogDebug("程序执行到第一步");
            this.logger.LogDebug("程序执行到第二步");
            this.logger.LogError("数据库连接失败");
            this.logger.LogWarning("用户取消了支付");
        }
    }
}



其它日志提供者:

1。 Console只适合开发阶段,如果是运维阶段,是需要写文件的。

      控制台的缺点是:日志一多,刷屏后就看不到了,而且控制台容易被关掉。

2。 日志采用和Configuration类似的扩展机制,不仅内置了Debug,事件查看器,文件,Azure日志等提供者,还可以扩展。Provider可以共存。

3。 EventLog: 这个是windows特性,在windows部署网站、程序时可以使用。

      查阅方式是使用windows的一个工个 EventLog

      这个安装包是:Microsoft.Extensions.EventLog

      然后logBuilder.AddEventLog()


接下来修改日志提供者,增加eventLog,注意这个提供者是windows专供的,用了它就跨不了平台了,只能在windows下用。


使用windows工具”事件查看器“

image.png


在应用程序日志中,可以看到我们的输出。

image.png



--------------------- 

作者:hackpig

来源:www.skcircle.com

版权声明:本文为博主原创文章,转载请附上博文链接!


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:
本帖最后由 勇哥,很想停止 于 2024-05-28 15:10:15 编辑

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2025年4月    »
123456
78910111213
14151617181920
21222324252627
282930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864