Serilog, как разделить логи?

Рейтинг: 2Ответов: 2Опубликовано: 27.02.2023

Использую у Serilog логирование в консоль и Seq, как можно сделать ограничение через json файл настроек Serilog, чтобы логи в Seq попадали только с уровня Warning (да, в самом Seq есть настройки минимального уровня, но хотелось бы решение через конфиг) и выше? При этом оставить, чтобы вообще все логи попадали в консоль (Information +)?

Ответы

▲ 0Принят

В итоге решение получилось таким:

"WriteTo": [
  {
    "Name": "Console"
  },
  {
    "Name": "Seq",
    "Args": {
      "serverUrl": "http://localhost:5341/",
      "apiKey": "key",
      "restrictedToMinimumLevel": "Warning"
    }
  }
]

Оказалось, что Serilog.Sinks.Seq уже имеет встроенный фильтр, который устанавливается через restrictedToMinimumLevel.

▲ 0

В конфиге можно использовать "Filter": "Level >= Warning" для Seq и Level >= Information для консоли, примерно так:

"Serilog": {
    "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.Seq" ],
    "MinimumLevel": "Verbose",
    "WriteTo": [
      {
        "Name": "Console",
        "Args": {
          "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}"
        },
        "Filter": "Level >= Information"
      },
      {
        "Name": "Seq",
        "Args": {
          "serverUrl": "http://localhost:5341/",
          "apiKey": "YourApiKey"
        },
        "Filter": "Level >= Warning"
      }
    ]
  }