← Назад к вопросам

Как отфильтровать нужный лог

1.0 Junior🔥 11 комментариев
#Другое

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Фильтрация лог-файлов в работе QA Engineer

Фильтрация логов — это ключевая задача для эффективного анализа проблем, поиска ошибок и отслеживания поведения системы. В контексте QA Engineer это инструмент для локализации дефектов, анализа тестовых прогонов и понимания состояния среды. Методы зависят от источника, формата и объема данных.

Основные подходы и инструменты для фильтрации

1. Фильтрация в реальном времени (живые логи)

Для мониторинга работающих систем часто используют команды в терминале или специализированные утилиты.

  • tail и grep (Unix/Linux) — базовый, но мощный подход.

    # Отслеживание лога и фильтрация по ключевым словам
    tail -f application.log | grep "ERROR"
    
    # Фильтрация по нескольким критериям
    tail -f app.log | grep -E "ERROR|WARN|userId=12345"
    
    # Исключение определенных строк
    tail -f app.log | grep "ERROR" | grep -v "IgnoredError"
    
  • less с поиском — для изучения статических файлов.

    less large_log.log
    # Внутри less: /search_term для поиска вперед, ?search_term для поиска назад
    

2. Фильтрация статических лог-файлов

Когда нужно проанализировать уже записанные файлы (например, после тестового прогона).

  • grep с расширенными опциями — самый универсальный инструмент.

    # Поиск всех строк с ошибкой и вывод контекста (строк до и после)
    grep -B 2 -A 3 "NullPointerException" server.log
    
    # Поиск с учетом регулярных выражений и вывод номеров строк
    grep -n "POST /api/v1/order" access.log
    
    # Фильтрация по временному диапазону (если время указано в логе)
    grep "^2023-10-27 14:" application.log | grep "FAILED"
    
  • awk и sed — для сложной обработки и трансформации.

    # Вывод только 4-го столбца (например, уровень лога) и 7-го (сообщение)
    awk '$4 == "ERROR" {print $7}' structured.log
    
    # Фильтрация по времени с помощью awk (пример формата: HH:MM:SS)
    awk '$2 >= "14:00:00" && $2 <= "15:00:00"' logfile.log
    

3. Использование специализированных инструментов и платформ

В профессиональных средах часто применяются более продвинутые решения.

  • Log aggregators (ELK Stack, Splunk, Grafana Loki) — централизованный сбор, индексирование и поиск. Позволяют строить сложные запросы через GUI или API.

    // Пример запроса в Kibana (ELK) для поиска ошибок конкретного пользователя
    {
      "query": {
        "bool": {
          "must": [
            { "match": { "level": "ERROR" } },
            { "match": { "user_id": "789" } }
          ],
          "filter": { "range": { "@timestamp": { "gte": "now-1h" } } }
        }
      }
    }
    
  • Инструменты для логов приложений (Log4j, Serilog) — могут иметь собственные фильтры на уровне конфигурации, позволяя записывать только нужные события сразу.

4. Фильтрация в рамках тестовых фреймворков и CI/CD

QA Engineer часто интегрирует анализ логов в автоматизированные процессы.

  • Python с модулями (re, pandas) — для анализа логов в автотестах или скриптах.

    import re
    
    with open('test_run.log', 'r') as log_file:
        for line in log_file:
            if re.search(r'TestFailed.*TestCaseID=\d+', line):
                print(f"Найдена ошибка: {line}")
    
    # Использование pandas для структурированных логов (например, CSV)
    import pandas as pd
    logs_df = pd.read_csv('performance_log.csv')
    high_latency_requests = logs_df[logs_df['response_time'] > 1000]
    
  • Интеграция в CI/CD (Jenkins, GitLab CI) — пост-обработка логов после выполнения job.

    # В шаге Jenkins pipeline после запуска тестов
    sh '''
      grep -c "PASSED" test_results.log > passed_count.txt
      grep -c "FAILED" test_results.log > failed_count.txt
    '''
    

Ключевые принципы эффективной фильтрации

  • Определите четкие критерии: что именно нужно найти (уровень ошибки, пользователь, транзакция, временной промежуток).
  • Знайте структуру лога: понимание формата (текстовый, JSON, CSV) и расположения данных упрощает построение фильтров.
  • Сохраняйте контекст: при фильтрации ошибок важно видеть не только саму строку, но и предшествующие события (используйте grep -B или инструменты, сохраняющие связность).
  • Комбинируйте фильтры: последовательное применение нескольких условий (grep | grep) или использование сложных регулярных выражений.
  • Автоматизируйте рутинные операции: создавайте скрипты или конфигурации для регулярно выполняемых фильтраций.

Для QA Engineer важно не просто найти строку в логе, а интерпретировать данные в контексте теста или проблемы. Поэтому фильтрация часто сопровождается дальнейшим анализом — сопоставлением с шагами теста, запросами к БД или метриками системы. Используйте комбинацию инструментов от простых команд в терминале до мощных платформ мониторинга, адаптируя подход под конкретную задачу и инфраструктуру проекта.

Как отфильтровать нужный лог | PrepBro