ILoggingBuilder Ведение журнала LogLevel в настройках приложения Json, похоже, не подтвержден в потоке журналов Azure или журнале BLOB-объектов - PullRequest
0 голосов
/ 17 мая 2019

Я создал новое веб-приложение .net core 2.1 и развернул его в Azure и Log Stream, а также ведение журнала приложений в хранилище BLOB-объектов, похоже, не соответствует моей конфигурации ведения журнала.

Я создал новоеРешение с новым проектом в Visual Studio 2019 для веб-приложения .net core 2.1.В маршрутном указателе домашнего контроллера мы добавили в журнал строк некоторую информацию, которая выглядит следующим образом:

private readonly ILogger<HomeController> _logger;

public HomeController(ILogger<HomeController> logger)
{
    _logger = logger;
}

public IActionResult Index()
{
    _logger.LogInformation("=========================================");
    _logger.LogError("=========================================");
    return View();
}

И в appsettings.Development.json мы установили LogLevel для системы и Microsoft на «Ошибка»,

Я ожидаю, что поведение в Azure будет таким же, как при локальном запуске.Локально при доступе к индексируемому маршруту и ​​если для appsettings.Development.json LogLevel для System и Microsoft установлено значение «Информация», мы видим этот вывод в окне вывода отладки:

Microsoft.AspNetCore.Hosting.Internal.WebHost: Информация: запрос на запуск HTTP / 1.1 GET http // localhost: 44378 /
Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler: Информация: Identity.Application не аутентифицирована.Сообщение об ошибке: сбой при снятии защиты с билета Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker: Информация: маршрут соответствует {action = "Index", controller = "Home", page = "", area = ""}}.Выполнение действия контроллера с подписью Microsoft.AspNetCore.Mvc.IActionResult Index () на контроллере LoggingTest.Controllers.HomeController (LoggingTest).Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker: Информация: выполнение метода действия LoggingTest.Controllers.HomeController.Index (LoggingTest) - Состояние проверки: действительный LoggingTest.Controllers.HomeController: Информация: ======================================== LoggingTest.Controllers.HomeController: Ошибка: ========================================= Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker: Информация: метод выполненных действий LoggingTest.Controllers.HomeController.Index(LoggingTest), вернул результат Microsoft.AspNetCore.Mvc.ViewResult в 7,9475мс.Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor: Информация: Выполняется ViewResult, работает представление индекса.Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor: Information: Executed ViewResult - просмотр индекса, выполненного за 11,4824 мс.Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker: Информация: выполненное действие LoggingTest.Controllers.HomeController.Index (LoggingTest) в 37.629ms Microsoft.AspNetCore.Hosting.Internal.WebHost: Информация: запрос завершен в 54.1369ms 200 текст / hml;charset = utf-8

А когда для System и Microsoft установлено значение «Ошибка»:

LoggingTest.Controllers.HomeController: Информация: ================================================ LoggingTest.Controllers.HomeController: Ошибка:. =========================================

Мы хотим, чтобы это было такбыть нашим выходом в наш LogStream и Logs.По сути, мы не хотим, чтобы информация о EfCore и другой информации, относящейся к Microsoft, находилась в журнале, если только в журнале LogLevel «Error».Но мы хотим, чтобы наши журналы уровня «Информация» регистрировались.

После публикации в Azure и настройки разработки ASPNETCORE_ENVIRONMENT на использование той же настройки Appsettings.Поток журнала и большой двоичный объект для журнала выглядят следующим образом после вызова индекса:

2019-05-17 15: 57: 24.844 +00: 00 [Информация] Microsoft.AspNetCore.Hosting.Internal.WebHost: запрос на запуск HTTP / 1.1 GET http // loggingtest20190517104201.azurewebsites.net / 2019-05-17 15: 57: 24.844 +00: 00 [Информация] Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker: Маршрут соответствует {action ="Index", controller = "Home", page = "", area = ""}.Выполнение действия LoggingTest.Controllers.HomeController.Index (LoggingTest) 2019-05-17 15: 57: 24.844 +00: 00 [Информация] Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker: Выполнение метода действия LoggingTest.Controllers.HomeController.Inx(LoggingTest) - Состояние проверки: действительно 2019-05-17 15: 57: 24.844 +00: 00 [Информация] LoggingTest.Controllers.HomeController: ========================================= 2019-05-17 15: 57: 24.845 +00: 00 [Ошибка] LoggingTest.Controllers.HomeController: ========================================= 2019-05-17 15: 57: 24.845 +00: 00[Информация] Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker: выполненный метод действия LoggingTest.Controllers.HomeController.Index (LoggingTest), вернул результат Microsoft.AspNetCore.Mvc.ViewResult в 0,0635 мс.2019-05-17 15: 57: 24.845 +00: 00 [Информация] Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor: Выполнение ViewResult, индекс работающего представления.2019-05-17 15: 57: 24.845 +00: 00 [Информация] Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor: Executed ViewResult - просмотр индекса, выполненного за 0,8902 мс.2019-05-17 15: 57: 24.845 +00: 00 [Информация] Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker: выполнено действие LoggingTest.Controllers.HomeController.Index (LoggingTest) в 1.0913ms 2019-05-17 15:57: 24.846 +00: 00 [Информация] Microsoft.AspNetCore.Hosting.Internal.WebHost: запрос выполнен в 1,4542 мс 200 текст / html;charset = utf-8 2019-05-17 15: 57: 24.941 +00: 00 [Информация] Microsoft.AspNetCore.Hosting.Internal.WebHost: запрос на запуск HTTP / 1.1 GET

Остальная часть журнала удалена длякраткость ...

Вот мой файл appsettings.development.json:

{
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "System": "Error",
      "Microsoft": "Error"
    }
  }
}

Вот мой файл appsettings.json:

{
  "ConnectionStrings": {
    "DefaultConnection": "Removed"
  }, 
  "AllowedHosts": "*"
}

Набор переменных окружения в веб-приложении Azure:

ASPNETCORE_ENVIRONMENT = Разработка

Program.cs и Startup.cs не изменяются изшаблон проекта.

public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>();

Почему мои уровни журналов не соблюдаются?

Ответы [ 2 ]

0 голосов
/ 20 мая 2019

Наконец-то удалось заставить его работать, поместив эти настройки в мой файл appsettings.development.json:

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Information",
      "System": "Error",
      "Microsoft": "Error"
    },
    "AzureAppServicesBlob": {
      "LogLevel": {
        "Default": "Information",
        "Microsoft": "Error",
        "System": "Error"
      }
    },
    "AzureAppServicesFile": {
      "LogLevel": {
        "Default": "Information",
        "Microsoft": "Error",
        "System": "Error"
      }
    }
  }
}
0 голосов
/ 19 мая 2019

В прошлом я использовал следующее для настройки провайдера журнала Azure

"AzureAppServicesDiagnosticsSettings": {
  "Microsoft": "Warning"
}

Но, просмотрев документацию , провайдер устарел и заменен AzureFileLoggerOptions и AzureBlobLoggerOptions (см. Регистрация в ASP.NET Core ).

Хотя я не проверял ни один из этих параметров конфигурации, чтобы узнать, работают ли они одинаково.

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