web-dev-qa-db-ja.com

異なる最小レベルのログSerilog

Serilogの異なるロガー間でログに記録されるレベルを区別する方法はありますか? MinimumLevel Debugをコンソール出力に記録したいが、警告のみをファイル出力に記録したい。私は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」を試しましたが、うまくいきませんでした。

5
jollyroger23

あなたが探している設定はrestrictedToMinimumLevelです。このGitHub issue はこれのいくつかの例を示していますが、例として、restrictedToMinimumLevelArgsに追加してRollingFileを指定するだけです。

"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"
      }
    ]
  },
7
Kirk Larkin

構成には1つのSerilogロガーがありますが、2つのsinkがあります。シンクの1つはRollingFileで、もう1つはコンソールです。

シンクごとの最小ログレベルをオーバーライドできます(ただし、上げるだけです) 、引数はrestrictedToMinimumLevelと呼ばれます。

ファイルシンクのappsettings.jsonファイルで、ロガーのデフォルトのDebugからWarningに最小ログレベルを上げたいので、次のようになります。

"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"
      }
    ]
  },
3
Saeb Amini