Какая информация хранится в логах приложения?

«Какая информация хранится в логах приложения?» — вопрос из категории Логирование и отчётность, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В логах приложения хранится информация, необходимая для мониторинга работы системы, отладки и анализа инцидентов. Как QA-инженер, я проверяю полноту и корректность логирования. Типичные данные:

  • Метаданные: Таймстамп, уровень логирования (DEBUG, INFO, WARN, ERROR), имя логгера/класса, идентификатор потока (thread ID).
  • Контекст выполнения: Идентификаторы пользовательской сессии (sessionId), запроса (requestId), транзакции (correlationId) для трассировки цепочки событий.
  • События приложения: Ключевые точки входа/выхода методов, результаты валидации, бизнес-события (например, "Order 12345 created").
  • Ошибки и исключения: Полный стектрейс исключений, коды ошибок, входные данные, вызвавшие сбой.
  • Производительность: Время выполнения критичных операций (например, "Database query executed in 150ms").
  • Внешние вызовы: Запросы к API, базам данных, сторонним сервисам с параметрами и статусами ответов.

Пример структурированного лога (JSON):

{
  "timestamp": "2023-10-05T14:30:00Z",
  "level": "ERROR",
  "logger": "com.example.PaymentService",
  "message": "Failed to process payment",
  "transactionId": "txn_789",
  "error": {
    "type": "PaymentGatewayException",
    "message": "Insufficient funds",
    "stackTrace": "..."
  }
}

Для эффективного тестирования я использую инструменты для парсинга и анализа логов (например, ELK-стек или Splunk), чтобы убедиться, что логируются все необходимые для расследования данные и нет утечки конфиденциальной информации (PII).