覆盖MinimumLevel 在 Serilog 中不起作用

尝试设置 Serilog 2.8.0(在 .NET 4.6.2 中)的最低日志级别。日志记录工作正常,但无法覆盖功能。


这是我的Program.cs:


using System;

using LogTest1.Classes;

using Microsoft.Extensions.Configuration;

using Serilog;

using SomeLib;



namespace LogTest

{

    internal class Program

    {

        private static void Main(string[] args)

        {

            var configuration = new ConfigurationBuilder()

                .AddJsonFile("appsettings.json", false, true)

                .Build();


            Log.Logger = new LoggerConfiguration()

                .ReadFrom.Configuration(configuration)

                .CreateLogger();


            Log.Verbose("Verbose");

            Log.Debug("Debug");

            Log.Information("Information");

            Log.Warning("Warning");

            Log.Error("Error");

            Log.Fatal("Fatal");


            Console.ReadKey();

        }

    }

}

以及appsettings.json文件:


{

  "Serilog": {

    "Using": [ "Serilog.Sinks.Console" ],

    "MinimumLevel": {

      "Default": "Warning",

      "Override": {

        "LogTest": "Information"

      }

    },

    "WriteTo": [

      { "Name": "Console" }

    ]

  }

}

期望看到从Information开始的所有日志,但只从warning中获取。


胡子哥哥
浏览 176回答 1
1回答

潇湘沐

根据您的配置,您将覆盖MinimumLevel 仅从SourceContext名称为 发送的日志消息。LogTest"Override": {  "LogTest": "Information"}对您所做的简单调用Log.Information("Information")不会设置源上下文,因此覆盖不适用...您必须首先创建上下文。var contextLog = Log.ForContext("SourceContext", "LogTest");contextLog.Information("This shows up because of the override!");contextLog.Information("... And this too!");Log.Information("This does **not** show, because SourceContext != 'LogTest'");
打开App,查看更多内容
随时随地看视频慕课网APP