Не удалось преобразовать конфигурацию Serilog в настройки приложения. json - PullRequest
3 голосов
/ 14 июля 2020

У меня есть этот фрагмент кода на c#, который очень хорошо выполняет свою работу. Каждый журнал, поступающий из CSPConsumersLayer, регистрируется в определенном c файле (ConsumerLog.txt), а все остальные журналы регистрируются в другом файле (Log.txt). Это конфигурация C#, которую я хочу достичь в настройках приложения. json

Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.WriteTo.Logger(lg => lg.Filter.ByIncludingOnly(Matching.FromSource(nameof(CSPConsumersLayer))).WriteTo.File(@"..\Logs\ConsumerLog.txt", LogEventLevel.Information, "{Timestamp:G} [{Level}] {ThreadId} {MachineName} {Message} {Exception}{NewLine}", rollOnFileSizeLimit: true, fileSizeLimitBytes: 104857600))
.WriteTo.Logger(lg => lg.Filter.ByExcluding(Matching.FromSource(nameof(CSPConsumersLayer))).WriteTo.File(@"..\Logs\Log.txt", LogEventLevel.Information, "{Timestamp:G} [{Level}] {User} {IP} {ThreadId} {MachineName} {SourceContext} {RequestId} {Message} {Exception}{NewLine}", rollOnFileSizeLimit: true, fileSizeLimitBytes: 104857600))
.CreateLogger();

И когда я пытаюсь преобразовать его в Json - как будто это не сработает

- Это JSON, который я придумал, но он не работает должным образом.

"Serilog": {
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Warning",
        "System": "Warning",
        "Microsoft.Hosting.Lifetime": "Information"
      }
    },
    "WriteTo": [
      { "Name": "Console" },
      {
        "Name": "Logger",
        "Args": {
          "configureLogger": {
            "Filter": [
              {
                "Name": "ByIncludingOnly",
                "Args": {
                  "expression": "StartsWith(SourceContext, 'CSPConsumersLayer')"
                }
              }
            ],
            "WriteTo": [
              {
                "Name": "File",
                "Args": {
                  "path": "../Logs/ConsumerLog.log",
                  "outputTemplate": "{Timestamp:G} [{Level}] {User} {IP} {ThreadId} {MachineName} {SourceContext} {RequestId} {Message} {Exception}{NewLine}",
                  "rollOnFileSizeLimit": "true",
                  "fileSizeLimitBytes": 104857600
                }
              }
            ]
          }
        }
      },
      {
        "Name": "Logger",
        "Args": {
          "configureLogger": {
            "Filter": [
              {
                "Name": "ByExcluding",
                "Args": {
                  "expression": "StartsWith(SourceContext, 'CSPConsumersLayer')"
                }
              }
            ],
            "WriteTo": [
              {
                "Name": "File",
                "Args": {
                  "path": "../Logs/Log.log",
                  "outputTemplate": "{Timestamp:G} [{Level}] {User} {IP} {ThreadId} {MachineName} {SourceContext} {RequestId} {Message} {Exception}{NewLine}",
                  "rollOnFileSizeLimit": "true",
                  "fileSizeLimitBytes": 104857600
                }
              }
            ]
          }
        }
      }
    ],
    "Enrich": [
      "FromLogContext",
      "WithMachineName"
    ]
  }

1 Ответ

2 голосов
/ 19 июля 2020

Ответ прост. Если вы хотите выполнить фильтрацию в настройках приложения . json, вы должны включить пакет с именем 'serilog-extensions-logging' .

...