Используйте несколько приемников Serilog ReadFrom.Configuration - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь настроить serilog на веб-сервисе для записи журналов как в Microsoft Application Insights, так и в файл. Идея состоит в том, что мы запишем все в файл журнала, но события исключений и ошибок будут go понятными для приложения. Я очень плохо знаком с использованием Application Insights, но похоже на приложение. Insights получает события, но не «Traces», которые содержат операторы журнала. Но я могу неправильно понять, как все это работает, как я уже сказал, очень новое.

Я хочу установить в коде один регистратор и отправить Serilog в оба приемника. И я хотел бы установить это с помощью ReadFrom.Configuration, а не, так сказать, в коде. Мои настройки приложений. json Раздел Serilog включен ниже.

Приведенная ниже конфигурация работает для записи в файл, но, похоже, ничего не отправляет в трассировку Application Insights.

"Serilog": {
    "Using": [
      "Serilog.Sinks.ApplicationInsights",
      "Serilog.Sinks.File"
    ],
    "MinimumLevel": {
      "Default": "Debug",
      "Override": {
        "Microsoft": "Warning",
        "System": "Warning"
      }
    },
    "WriteTo": [
      {
        "Name": "ApplicationInsights",
        "Args": {
          "restrictedToMinimumLevel": "Information",
          "telemetryConverter": "Serilog.Sinks.ApplicationInsights.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter, Serilog.Sinks.ApplicationInsights",
          "instrumentationKey": "-inst-key-"
        }
      },
      {
        "Name": "File",
        "Args": {
          "flushToDiskInterval": "00:00:01",
          "path": "Logs\\myWebService-.log",
          "rollOnFileSizeLimit": true,
          "fileSizeLimitBytes": 50100100,
          "rollingInterval": "Day",
          "retainedFileCountLimit": 5,
          "buffered": false,
          "outputTemplate": "{Timestamp:dd-MMM-yyyy HH:mm:ss.fff zzz} {Level:u3} tid={ThreadId} {Message:lj}{NewLine}"
        }
      }
    ]
  }

public Serilog.ILogger CreateLogger(IConfiguration config)
        {

            // Binding the class AppSettings to the AppSettings tage in the file: appsettings.json
            var appSettings = new AppSettings();
            Configuration.GetSection("AppSettings").Bind(appSettings);
            //CreateEventSource();
            // When nswag run, Configuration will be null. return an empty logger.
            if (config == null)
                return Log.Logger;
            return new LoggerConfiguration().ReadFrom.Configuration(config)
                                            .Enrich.WithThreadId()
                                            .CreateLogger();
        }
...