簡體   English   中英

不同的最低級別日志 Serilog

[英]Different Minimum Level Logs Serilog

有沒有辦法區分 Serilog 的不同記錄器之間記錄的級別? 我希望能夠將 MinimumLevel Debug 記錄到控制台輸出,但僅將 Warning 及以上記錄到我的文件輸出。 我正在使用 ASP.NET Core 2.1,這就是 appsetting.json 當前的樣子:

"Serilog": {
    "Using": [ "Serilog.Sinks.Console" ],
    "MinimumLevel": "Debug",
    "WriteTo": [
      {
        "Name": "RollingFile",
        "IsJson": true,
        "Args": {
          "pathFormat": "C:\\Logs\\Log-{Hour}.json",
          "formatter": "Serilog.Formatting.Json.JsonFormatter, Serilog"
        }
      },
      {
        "Name": "Console"
      }
    ]
  },

它是否類似於“Args”下的另一個參數? 我在這個位置嘗試過“minimumnLevel”,但沒有用。

您正在尋找的設置是restrictedToMinimumLevel 這個 GitHub 問題展示了一些這樣的例子,但對於你的例子,你只需要將restrictedToMinimumLevel添加到你的RollingFileArgs中:

"Serilog": {
    "Using": [ "Serilog.Sinks.Console" ],
    "MinimumLevel": "Debug",
    "WriteTo": [
      {
        "Name": "RollingFile",
        "IsJson": true,
        "Args": {
          "pathFormat": "C:\\Logs\\Log-{Hour}.json",
          "formatter": "Serilog.Formatting.Json.JsonFormatter, Serilog",
          "restrictedToMinimumLevel": "Warning"
        }
      },
      {
        "Name": "Console"
      }
    ]
  },

從上面的答案開始,這就是我在代碼中設置它而不是配置的方式

LoggerConfiguration GetConfig()
                => new LoggerConfiguration()
                    .WriteTo.Seq(serverUrl: "http://localhost:5341", restrictedToMinimumLevel: LogEventLevel.Debug)
                    .WriteTo.Console(restrictedToMinimumLevel: LogEventLevel.Error);
            var logger = GetConfig().CreateLogger();
            builder.RegisterInstance(logger).As<ILogger>();

在我這樣做之后,它適用於日志級別 Information 及更高級別。 調試沒有用。 這篇文章解釋了原因。

我必須像這樣設置一個“全球”最低水平。

LoggerConfiguration GetConfig()
            => new LoggerConfiguration()
                .WriteTo.Seq(serverUrl: "http://localhost:5341", restrictedToMinimumLevel: LogEventLevel.Debug)
                .WriteTo.Console(restrictedToMinimumLevel: LogEventLevel.Error)
                .MinimumLevel.Verbose();

在您的配置中,您有一個 Serilog 記錄器,但您有 2 個接收 您的接收器之一是 RollingFile,另一個是 Console。

您可以覆蓋(但只能提高)每個接收器的最低日志記錄級別,該參數稱為restrictedToMinimumLevel

由於您想在文件接收器中將最低日志記錄級別從記錄器的默認Debug提高到Warning ,因此在您的 appsettings.json 文件中,它看起來像這樣:

"Serilog": {
    "Using": [ "Serilog.Sinks.Console" ],
    "MinimumLevel": "Debug",
    "WriteTo": [
      {
        "Name": "RollingFile",
        "IsJson": true,
        "Args": {
          "pathFormat": "C:\\Logs\\Log-{Hour}.json",
          "formatter": "Serilog.Formatting.Json.JsonFormatter, Serilog",
          "restrictedToMinimumLevel": "Warning"
        }
      },
      {
        "Name": "Console"
      }
    ]
  },

暫無
暫無

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

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