Как мне интерпретировать конфигурацию Serilog в ASP.NET Core 2.1? - PullRequest
0 голосов
/ 04 июня 2018

Почему-то мне очень трудно понять, что происходит с конфигурацией Serilog.У меня есть веб-API с .NET Core 2.1 и установлен serilog.sink.logstash.Мой запуск имеет:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    var serverURL = Configuration.GetSection("Logging")["logstashServer"];
    var logger = new LoggerConfiguration()
        .Enrich.FromLogContext()
        .Enrich.WithProperty("Enviroment", env.EnvironmentName)
        .Enrich.WithProperty("ApplicationName", "MyApp")
        .WriteTo.LogstashHttp(serverURL);           

    if (env.IsDevelopment())
    {         
        app.UseDeveloperExceptionPage();
        logger.WriteTo.Console();
    }

    loggerFactory.AddSerilog();

    Log.Logger = logger.CreateLogger();

    app.UseCors("CorsPolicy");
    app.UseMvc();
}

В моих настройках приложения есть раздел:

"Logging": {
  "logstashServer": "http://192.168.0.6:8101",
  "IncludeScopes": false,
  "Serilog": {
    "MinimumLevel": {
      "Default": "Error",
      "Override": {
        "Microsoft": "Error",
        "Microsoft.AspNetCore.Hosting": "Error",
        "Microsoft.AspNetCore.Mvc": "Error",
        "System": "Error"
      }
    }
  }
}

Независимо от того, что я делаю, в консоли и в logstash я вижу, что регистрируется много нежелательной информации::

[14:27:54 INF] Выполнен метод действия MyApp.Controllers.LoggerController.Post (MyApp), возвращен результат Microsoft.AspNetCore.Mvc.OkResult в 0,0771 мс.
MyApp>[14:27:54 INF] Выполнение HttpStatusCodeResult, установка HTTP-кода состояния 200
MyApp> [14:27:54 INF] Выполненное действие MyApp.Controllers.LoggerController.Post (MyApp) в 2.0855ms

и т. Д.Почему я вижу их, так как у меня минимальная ошибка уровня?

Ответы [ 2 ]

0 голосов
/ 07 августа 2018

Рассматривая способы установки, настройки и использования Serilog в .NET Core 2.1 проекте API, я нашел эту статью очень полезной.

О файле конфигурации, в репозитории Serilog GitHub есть специальная страница о Serilog.Settings.Configuration пакете.

0 голосов
/ 04 июня 2018

Несмотря на то, что вы добавили конфигурацию в appsettings.json для переопределения уровней ведения журнала Serilog, вы фактически не передавали указанную конфигурацию в Serilog.На простейшем уровне это требует установки пакета nuget Serilog.Settings.Configuration .После того, как вы это сделали, вы можете добавить вызов к ReadFrom.Configuration, например так:

var logger = new LoggerConfiguration()
    .ReadFrom.Configuration(Configuration.GetSection("Logging"))
    .Enrich.FromLogContext()
    // ...

Это все, что вам нужно для того, чтобы перенести вашу конфигурацию в Serilog, но у вас есть другие проблемы скак вы все еще используете ILoggerFactory внутри Configure ( это изменилось в ASP.NET Core 2.0 ).Одна из проблем, которую это, вероятно, вызывает у вас, заключается в том, что как поставщик консоли ASP.NET Core, так и приемник консоли Serilog ведут запись журналов.Если вам нужна помощь по всем этим вопросам, это хорошо документировано в Интернете, но, конечно, вы можете создать дополнительные вопросы о переполнении стека, если это абсолютно необходимо.

Николас Блумхардт написал в блоге об ASP.NET Core 2.0регистрация изменений - это полезное чтение, которое должно значительно упростить работу с Serilog + ASP.NET Core.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...