少有人走的路

勇哥的工业自动化技术网站

.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

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


发表评论:

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

«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接

Powered By Z-BlogPHP 1.7.3

Copyright www.skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864