zoukankan      html  css  js  c++  java
  • netcore3.0 Logging 日志系统(三)

    上篇介绍了netcore里面的几个日志提供器

    我们看下如何简单的使用:

    var services = new ServiceCollection();
                services.AddLogging(builder => { builder.AddConsole(); });
                var provider = services.BuildServiceProvider();
    
                var logger = provider.GetService<ILogger<Program>>();
                logger.LogInformation("test");
                Console.Read();

    我们也可以自己扩展:

    public class MyLogger : ILogger
        {
            public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
            {
                Console.WriteLine(formatter(state, exception));
            }
    
            public bool IsEnabled(LogLevel logLevel)
            {
                return true;
            }
    
            public IDisposable BeginScope<TState>(TState state)
            {
                return null;
            }
        }
    
        public class MyLoggerProvider : ILoggerProvider
        {
            public void Dispose()
            {
                
            }
    
            public ILogger CreateLogger(string categoryName)
            {
                return new MyLogger();
            }
        }
    
        public static class MyLoggerExtension
        {
            public static ILoggingBuilder AddMyLogger(this ILoggingBuilder builder)
            {
                builder.AddConfiguration();
                builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton<ILoggerProvider, MyLoggerProvider>());
                return builder;
            }
        }
    class Program
        {
            static void Main(string[] args)
            {
                var services = new ServiceCollection();
                services.AddLogging(builder => { builder.AddMyLogger(); });
                var provider = services.BuildServiceProvider();
    
                var logger = provider.GetService<ILogger<Program>>();
                logger.LogInformation("test");
                Console.Read();
            }
        }
  • 相关阅读:
    HTTP协议--详解
    汇编语言前五章总结
    [转] vscode C/C++ 插件预定义环境变量(linux)
    C++小细节
    CC++ 如何确定一个变量的类型(恶心的指针)
    Ubuntu下安装tensorflow
    github 上不去
    应用层01-HTTP
    C++ 传递数组引用
    C++ 命令行窗口打印二叉树(图形)
  • 原文地址:https://www.cnblogs.com/lanpingwang/p/12541180.html
Copyright © 2011-2022 走看看