Настройка уровней журналов в построителе API данных

Построитель API данных (DAB) поддерживает отфильтрованные уровни журналов для управления детализацией. Вы можете задать глобальный уровень и переопределить определенные пространства имен или классы для ориентированной диагностики.

Схема, показывающая поток фильтрации на уровне журнала.

Параметры ведения журнала настраиваются в runtime.telemetry.log-level разделе конфигурации. Вы можете указать уровни журналов глобально или целевые определенные пространства имен или классы для точного управления.

Предпосылки

  • Существующий файл конфигурации DAB.

Инструмент запуска

Используйте dab configure для задания уровней журнала в файле конфигурации.

Настройка уровней ведения журнала

dab configure \
  --runtime.telemetry.log-level.default Warning \
  --runtime.telemetry.log-level.Azure.DataApiBuilder.Core Information \
  --runtime.telemetry.log-level.Azure.DataApiBuilder.Core.Configurations.RuntimeConfigValidator Debug

Запустите DAB.

dab start

Тестирование логирования

  1. Отправьте запрос в API.

  2. Убедитесь, что журналы соответствуют настроенным уровням.

Конфигурация

В файле конфигурации добавьте раздел log-level под runtime.telemetry.

Приоритеты уровня журнала

Наиболее конкретное пространство имен или имя класса имеет приоритет. Ключ default задает базовый уровень для всех остальных компонентов, не перечисленных явным образом.

Если опущено, DAB использует уровни по умолчанию в зависимости от режима узла:

  • development режим по умолчанию — это Debug.
  • production режим по умолчанию — это Error.

Поддерживаемые уровни журнала

  • Trace: наиболее подробные сведения, как правило, для глубокого устранения неполадок.
  • Debug: подробные сведения о диагностике проблем во время разработки.
  • Information: общие, высокоуровневые события, описывающие обычные операции.
  • Warning: непредвиденные ситуации или незначительные проблемы, которые могут потребовать внимания.
  • Error: сбои, которые препятствуют успешному выполнению операции.
  • Critical: серьезные проблемы, которые вызывают сбой системы или основной функции.
  • None: отключите ведение журнала для целевой категории или компонента.

Частичные совпадения имен поддерживаются, но должны заканчиваться разделителем . . Рассмотрим пример.

  • Azure.DataApiBuilder.Core.Configurations.RuntimeConfigValidator
  • Azure.DataApiBuilder.Core
  • default

Пример конфигурации

{
  "runtime": {
    "telemetry": {
      "log-level": {
        "Azure.DataApiBuilder.Core.Configurations.RuntimeConfigValidator": "Debug",
        "Azure.DataApiBuilder.Core": "Information",
        "default": "Warning"
      }
    }
  }
}

В этом примере журналы из RuntimeConfigValidator используют Debug, другие классы под Azure.DataApiBuilder.Core используют Information, а все остальные журналы по умолчанию используют Warning.

Command-line

Настройте уровни журнала с помощью dab configure.

  • --runtime.telemetry.log-level.default
  • --runtime.telemetry.log-level.<namespace-or-class>

Example

dab configure \
  --runtime.telemetry.log-level.default Warning \
  --runtime.telemetry.log-level.Azure.DataApiBuilder.Core Information \
  --runtime.telemetry.log-level.Azure.DataApiBuilder.Core.Configurations.RuntimeConfigValidator Debug

Результирующая конфигурация

{
  "runtime": {
    "telemetry": {
      "log-level": {
        "Azure.DataApiBuilder.Core.Configurations.RuntimeConfigValidator": "Debug",
        "Azure.DataApiBuilder.Core": "Information",
        "default": "Warning"
      }
    }
  }
}

Поддержка горячей перезагрузки (hot-reload)

Вы можете динамически обновлять уровни журналов (горячая перезагрузка) как в режимах разработки, так и в рабочих режимах без перезапуска приложения. Это помогает настроить ведение журнала во всплывающем режиме для устранения неполадок.

Важные пространства имен для фильтрации

Некоторые распространенные пространства имен и классы, которые могут потребоваться отфильтровать и почему:

  • Azure.DataApiBuilder.Core.Configurations.RuntimeConfigValidator: диагностика проблем проверки конфигурации и ошибок схемы.
  • Azure.DataApiBuilder.Core.Resolvers.SqlQueryEngine: изучение поведения создания и выполнения SQL-запросов.
  • Azure.DataApiBuilder.Core.Resolvers.IQueryExecutor: трассировка выполнения и времени выполнения запросов к базе данных.
  • Azure.DataApiBuilder.Service.HealthCheck.ComprehensiveHealthReportResponseWriter: устранение неполадок при составлении отчета о состоянии конечной точки.
  • Azure.DataApiBuilder.Service.Controllers.RestController: проверьте маршрутизацию запросов REST и ошибки на уровне контроллера.
  • Azure.DataApiBuilder.Auth.IAuthorizationResolver: отладка решений авторизации и оценка ролей.
  • Microsoft.AspNetCore.Authorization.IAuthorizationHandler: изучение поведения конвейера авторизации ASP.NET Core.
  • default: задайте базовый уровень для всех остальных категорий, которые не указаны явным образом.