• dotnet logging serilog support


    add serilog packages

    dotnet add package serilog.aspnetcore
    dotnet add package Serilog.Sinks.Console
    

    add serilog support

    using Serilog;
    using Serilog.Formatting.Json;
    
      ServiceCollection services = new ServiceCollection();
    
      Log.Logger = new LoggerConfiguration()
          .MinimumLevel.Debug()
          .Enrich.FromLogContext()
          .WriteTo.Console(new JsonFormatter())
          .CreateLogger();
    
      services.AddLogging(logBuilder => {
          // logBuilder.AddNLog();  // add nlog support
          logBuilder.AddSerilog();
      });
    
      // test with Serilog
      int itemNumber = 123, itemCount = 222;
      Log.Debug("Processing item {ItemNumber} of {ItemCount}", itemNumber, itemCount);
    

    use dotnet core ILogger

    class TestController
    {
        // IOptions: 
        // IOptionsSnapshot: 
        // IOptionsMonitor: 
        private IOptionsSnapshot<Config> optConfig { get; }
        private ILogger<TestController> logger { get; }
    
        public TestController(IOptionsSnapshot<Config> config, ILogger<TestController> logger)
        {
            optConfig = config;
            this.logger = logger;
        }
    
        public void Test()
        {
            logger.LogInformation("enter Test");
            logger.LogDebug("can you see me?");
            System.Console.WriteLine(optConfig.Value);
            logger.LogInformation("leave  Test");
        }
    }
    

    structured log output

    {"Timestamp":"2022-01-17T21:05:01.8240220+11:00","Level":"Debug","MessageTemplate":"Processing item {ItemNumber} of {ItemCount}","Properties":{"ItemNumber":123,"ItemCount":222}}
    {"Timestamp":"2022-01-17T21:05:01.9875653+11:00","Level":"Information","MessageTemplate":"enter Test","Properties":{"SourceContext":"consoleApp01.Controllers.TestController"}}
    {"Timestamp":"2022-01-17T21:05:01.9909203+11:00","Level":"Debug","MessageTemplate":"can you see me?","Properties":{"SourceContext":"consoleApp01.Controllers.TestController"}}
    name:, age:0, proxy:
    {"Timestamp":"2022-01-17T21:05:02.0006510+11:00","Level":"Information","MessageTemplate":"leave  Test","Properties":{"SourceContext":"consoleApp01.Controllers.TestController"}}
    
  • 相关阅读:
    ES6 函数的扩展2
    css3 UI元素状态伪类选择器
    HTML5 矩阵变换
    ES6 let和const命令(4)
    ES6 let和const命令(3)
    ES6 let和const命令(2)
    JVM的内存区域划分(一)
    MySQL的四种事务隔离级别
    快速排序
    Struts2与SpringMVC的区别
  • 原文地址:https://www.cnblogs.com/mryux/p/15814640.html
Copyright © 2020-2023  润新知