簡體   English   中英

覆蓋 MinimumLevel 在 Serilog 中不起作用

[英]Overriding MinimumLevel doesn't work in 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得到。

根據您的配置,您針對從名為LogTestSourceContext發送的日志消息覆蓋MinimumLevel ....

"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'");

您可以在文檔中閱讀有關SourceContext更多信息: https : //github.com/serilog/serilog/wiki/Writing-Log-Events#source-contexts

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM