Как включить запись логов в вк
Перейти к содержимому

Как включить запись логов в вк

  • автор:

Логирование

Логировние является неотъемлемой частью разработки. Логи показывают информацию о текущем состоянии программы. И чем лучше выстроено логирование, тем проще будет разобраться в нестандартных ситуациях.

Python поставляется для этих целей с гибким модулем logging . Для создания объекта Logger , вызываем функцию getLogger , передавая в нее имя логера.

Созданный объект Logger предоставляет методы для записи сообщений разного уровня ( DEBUG , INFO , WARNING , ERROR , CRITICAL ), что удобно для поиска нужной информации с применением фильтров.

По умолчанию в logging задан уровень WARNING , это означает, что сообщения уровня DEBUG и INFO будут игнорироваться при записи в лог. Изменить данное поведение можно с помощью метода setLevel , передав минимальный уровень, который будет отлавливаться.

Для отправки логов в сконфигурированные места используются обработчики. Мы можем использовать уже существующие хэндлеры, либо создать свой класс обработчика, унаследовавшись от базового класса Handler .

Сбор и предоставление логов

Для диагностики и решения проблем в работе сервиса специалистам поддержки VK WorkSpace требуются HAR-логи и логи консоли. Ниже описано, как получить логи в браузере:

Google Chrome

1. Перейдите в раздел, в котором воспроизводится ошибка.

2. Нажмите клавишу F12 или Ctrl + Shift + I для вызова панели инструментов разработчика.

3. Перейдите на вкладку «Network» («Сеть»).

image

4. Удалите запросы, нажав на , активируйте опции «Preserve log» и «Disable cache».

image

5. Убедитесь, что запись лога включена (горит значок ) и воспроизведите проблему.

6. После воспроизведения ошибки сохраните HAR-лог, нажав на .

7. Перейдите на вкладку «Console» («Консоль»), нажмите правой кнопкой мыши на область вывода логов: в открывшемся меню выберите «Save as…».

image

8. Передайте архив с логами в техническую поддержку.

Firefox

1. Перейдите в раздел, в котором воспроизводится ошибка.

2. Нажмите клавишу F12 или Ctrl + Shift + I для вызова панели инструментов разработчика.

3. Перейдите на вкладку «Сеть».

image

4. Удалите запросы, нажав на .

image

5. Воспроизведите проблему.

6. Нажмите правой кнопкой мыши в области вывода запросов. Сохраните лог, выбрав в открывшемся меню «Сохранить всё как HAR».

image

7. Перейдите на вкладку «Консоль», нажмите правой кнопкой мыши на область вывода запросов. В открывшемся меню выберите пункт «Сохранить все сообщения в файл».

image

8. Передайте архив с логами в техническую поддержку.

Edge

1. Перейдите в раздел, в котором воспроизводится ошибка.

2. Нажмите клавишу F12 или Ctrl + Shift + I для вызова панели инструментов разработчика.

3. Перейдите на вкладку «Network» («Сеть»).

image

4. Удалите запросы, нажав на , активируйте опции «Сохранить журнал» и «Отключить кэш».

image

5. Убедитесь, что запись лога включена (горит значок ). Воспроизведите проблему.

6. После воспроизведения ошибки сохраните HAR-лог, нажав на .

7. Перейдите на вкладку «Консоль», нажмите правой кнопкой мыши на область вывода логов, в открывшемся меню выберите «Save as. » («Сохранить как…»).

image

8. Передайте архив с логами в техническую поддержку.


Opera

1. Перейдите в раздел, в котором воспроизводится ошибка.

2. Нажмите сочетание Ctrl + Shift + I для вызова панели инструментов разработчика.

3. Перейдите на вкладку «Network» («Сеть»).

image

4. Удалите запросы, нажав на , активируйте опции «Preserve log» и «Disable cache».

image

5. Убедитесь, что запись лога включена (горит значок ). Воспроизведите проблему.

6. После воспроизведения ошибки сохраните HAR-лог, нажав на .

7. Перейдите на вкладку «Console» («Консоль»), нажмите правой кнопкой мыши на область вывода логов и в открывшемся меню выберите «Save as…».

image

8. Передайте архив с логами в техническую поддержку.

Как снимать логи с устройств на Android и iOS: разбираемся с инструментами

Краткая инструкция по чтению и разбору логов мобильных устройств на Android и iOS, а также необходимые инструменты для Windows и MacOS.

Статья подготовлена red_mad_robot и «Альфа-Банком» на основе доклада Senior QA red_mad_robot Ольги Никитиной «Инструменты для снятия логов с Android / iOS устройств. Чтение и разбор» на митапе «QАчественное общение» при поддержке red_mad_robot.

Уровни логирования и что они означают

Для начала разберёмся с логами. Это текстовые файлы, в которых записываются все действия пользователя. Например, какие кнопки он нажимает в приложении и как на это оно реагирует в ответ.

Записи в логах формируются в хронологическом порядке. Самая свежая — внизу.

Есть два вида логов:

  • Crash logs — файл, в котором хранятся записи только об ошибках экстренного завершения программы — по-простому, когда приложение крашнулось.
  • Logs — простые логи, или журнал событий. Это файл, в котором хранятся системные записи и ответы устройства на действие пользователя.

Логи на мобильных устройствах бывают нескольких уровней:

Они представлены по уровню важности — от самого высокого к самому низкому, — и каждый следующий уровень включает в себя предыдущий. Например, VERBOSE содержит в себе логи всех остальных.

Примечание: уровни более применимы к логам на Android, потому что именно там такое разделение встречается чаще.

Рассмотрим подробнее каждый уровень.

Error (ERROR)

На этом уровне информируются ошибки работы системы.

Записи этого уровня требуют быстрого вмешательства разработчика — на такие ошибки нужно реагировать максимально быстро.

Как пример, такая запись в логе:

“ SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length ”

Это ошибка, в которой говорится, что строковый элемент span не может быть пустым.

“ [ZeroHung]zrhung_get_config: Get config failed for wp[0x0008] ] ”

Эта системная ошибка сообщает, что происходит утечка памяти при взаимодействии с каким-то элементом или приложением.

Warning (WARN)

На этом уровне отображаются записи, сообщающие о каком-то неожиданном поведении, требующем внимания, или о ситуации, которая незнакома системе.

Например, сообщение ниже — запись из тестового приложения:

“ [OMX.hisi.video.decoder.avc] setting nBufferCountActual to 16 failed: -2147483648 “

Мы пытаемся декодировать запись в какой-то формат, но его нет. Ошибка сообщает о неуспешной попытке настройки видеоплеера в нужном формате.

“ BroadcastQueue: Permission Denial: broadcasting Intent ”

Эта системная ошибка говорит о сбое в работе одного из виджетов на устройстве.

Info (INFO)

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

Допустим, такое сообщение об уровне заряда батареи на устройстве:

“ APwBatteryMonitor: screen off start battery: 100 ”

А это сообщение говорит о том, что экран устройства был выключен:

Ещё в логи этого уровня входят запросы от клиента на сервер: хедеры, тело запросов, которые отправляет клиент, и ответы сервера.

okhttp.OkHttpClient: server: nginx/1.15.9

okhttp.OkHttpClient: date: Thu, 23 Sep 2021 19:41:17 GMT

okhttp.OkHttpClient: content-type: application/json

okhttp.OkHttpClient: vary: Accept-Encoding

okhttp.OkHttpClient: strict-transport-security: max-age=15724800; includeSubDomains

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

Debug (DEBUG)

Это уровень сообщений, в которых передаётся информация о процессах отладки или шагах работы крупных процессов.

Например, в записи ниже сказано, что пользователь нажимал на кнопку уменьшения или увеличения громкости:

Сначала мы видим запись о самом факте нажатия на кнопку, далее оно расшифровывается подробнее:

Ещё пример: если ваше приложение использует сокет-сессию, то на уровне DEBUG мы можем увидеть, когда сессия начинается и заканчивается:

“ b$b: WebSocket connected ”

Verbose (VERBOSE)

Сообщения такого уровня уточняют или раскрывают действия.

Например, у нас есть служба управления окнами на экране приложения. И на уровне Verbose мы можем увидеть подробности её работы.

WindowManager: Removing Window

На этом уровне мы можем посмотреть системные подробности наших действий. Например, при включении геолокации в записи отобразится текущая геолокация.

GnssLocationProvider: reportLocation Location [. ]

А меняя звук на устройстве, мы увидим, как растёт или падает значение:

AudioManager: getStreamVolume streamType: 3 volume: 10

Каждое нажатие, то есть изменение звука, будет отражаться новым сообщением.

Verbose — уровень самого низкого приоритета. Выбирая такой уровень отображения логов, мы будем видеть записи и со всех предыдущих уровней.

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

Инструменты для снятия логов: Android

Расскажем о трёх способах.

ПервыйLogcat в составе Android Studio, самый известный и широко используемый.

Для снятия логов нам необходимо перевести устройство в режим разработчика/отладки. Для этого нужно:

  • найти в настройках номер нашего билда или ОС (в зависимости от устройства),
  • около десяти раз нажать на эту информацию,
  • при появлении сообщения о том, не хотим ли мы перевести устройство в режим разработчика, нажать «Ок».

Примечание: алгоритм может отличаться в зависимости от производителя устройства, потому что у многих из них свои надстройки на ОС Android.

Дальше подключаем устройство по USB к ПК и устанавливаем Android Studio.
Следующие шаги на скрине:

  1. Выбираем вкладку Logcat (переходим к сообщениям в реальном времени).
  2. В окошке выбираем телефон, с которого снимаем логи.
  3. На этой вкладке выбираем логи определённого приложения. Если нужно снять вообще все логи со всех приложений и системы, эту вкладку стоит не трогать. Рядом с ней можно выбрать уровень логирования (вкладка Verbose на скрине).
  4. В поле поиска, где мы можем фильтровать выдачу, разрешено писать что угодно — от названия пакета до частей вроде fatal.

На скрине видно логи с подключенного устройства.

Второй способвыгрузка логов с самого устройства. Кроме режима разработчика нам нужно подключить устройство к ПК через USB и установить ADB — Android Debug Bridge.

Открываем терминал и пишем две команды.

Первая — adb devices — показывает подключённые устройства, которые видит ADB. В терминале выглядит так:

Название устройства — 7BKDU18504001505

Вводим вторую команду — adb -s название устройства logcat, — которая запускает утилиту Logcat для конкретного устройства. В терминале в реальном времени будут поступать логи.

Как их читать?

  1. В первом столбце — дата и время поступления записи.
  2. Во втором — обозначения уровней логирования. Например, D — это Debug.
  3. В третьем показываются названия инструмента, утилиты, пакета, от которых поступает сообщение, а также расшифровка того, что вообще происходит.

Третий инструментSDK Platform Tools. Процесс его установки практически аналогичен предыдущим двум:

  • переводим телефон в режим разработчика,
  • подключаем к ПК по USB,
  • скачиваем на ПК папку SDK PT (под свою ОС),
  • открываем папку SDK PT в терминале.

Теперь пишем команду ./adb logcat –v threadtime > ./android-debug.log.

В терминале это выглядит так:

Прерываем выполнение команды (например, на Mac это Control+C). Лог добавляется в папку.

В первом столбце — дата и время, во втором — уровни логов, в третьем — указание на то, от какой части системы поступают данные, лог и его расшифровка/подробности

Очень похоже на предыдущий терминал, но файл обновляется, пока в терминале действует команда.

Инструменты снятия логов: iOS

В первую очередь нас интересует xCode — интегрированная среда разработки (IDE), в которую встроен нужный нам инструмент Simulator.

Как использовать инструмент:

  1. Устанавливаем xCode.
  2. В системной строке нажимаем xCode → Open Developer Tools → Simulator.
  3. Устанавливаем приложение.
  4. В самом симуляторе выбираем Debug → Open System Log.

Мы будем видеть логи в реальном времени:

Подобное оформление логов мы уже где-то видели, но построение информации в выдаче немного отличается. Есть дата и время (1) и данные (2) о том, с какого устройства снята информация: имя компьютера, элемент системы, с которого пришло сообщение, и его расшифровка.

Но первый способ работает только с симуляторами. Если необходимо снимать логи с реального устройства, в этом может помочь раздел Devices and Simulators.

Записи можно отфильтровать по конкретному процессу (вашему приложению):

  1. Устанавливаем xCode.
  2. Подключаем устройство к ПК по USB.
  3. Открываем xCode → Windows → Devices and Simulators.

Дальше нажимаем у устройства Open Console и видим панель с названием устройства, информацией о модели и ОС:

1 — все приложения, которые установлены на устройстве, 2 — версия устройства, 3 — пакет приложения устройства

Логи поступают в реальном времени, но их удобно отслеживать:

У нас есть три столбца:

  1. «Время» — время поступления сообщения.
  2. «Процесс» — с какой части системы/приложения пришло сообщение.
  3. «Сообщение» — описание события, сервисная информация.

В инструменте есть поиск для фильтрации выдачи. Ещё есть полезная кнопка «Приостановить» — она останавливает поток логов.

А вот утилита iMazing поможет снимать iOS-логи для тех, у кого установлен Windows. Приложение платное, но часть функциональности доступна бесплатно. Например, за снятие логов устройства платить не нужно.

В меню выбираем «Показать консоль устройства». В открывшемся окне приходят записи логов в реальном времени со всего устройства.

1 — дата и время получения сообщения; 2 — имя телефона, информация, с какой части устройства пришло сообщение, и описание; 3 — поисковая строка для фильтрации выдачи

Ещё одно важное достоинство iMazing — возможность сохранять логи (разумеется, по кнопке «Сохранить»).

Статья подготовлена red_mad_robot и «Альфа-Банком» на основе доклада Senior QA red_mad_robot Ольги Никитиной «Инструменты для снятия логов с Android / iOS устройств. Чтение и разбор» на митапе «QАчественное общение» при поддержке red_mad_robot.

Конфигурация логгера для записи в файл и вывода на стандартный вывод

Часто в процессе разработки программ на Python возникает потребность ведения логов. При этом может возникнуть необходимость одновременной записи логов в файл и их вывода на стандартный вывод (stdout). Примером может служить ситуация, когда разрабатывается сложное многопоточное приложение и для отслеживания процесса выполнения необходимо сразу видеть логи на экране и сохранять их в файл для последующего анализа.

Модуль logging в Python предоставляет широкие возможности для настройки ведения логов. Для решения описанной проблемы можно использовать следующий код:

import logging logger = logging.getLogger() logger.setLevel(logging.DEBUG) handler1 = logging.StreamHandler() handler2 = logging.FileHandler('logfile.log') formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") handler1.setFormatter(formatter) handler2.setFormatter(formatter) logger.addHandler(handler1) logger.addHandler(handler2)

В этом коде создается два обработчика: StreamHandler для вывода логов на стандартный вывод и FileHandler для записи логов в файл. Оба обработчика используют один и тот же форматтер, который задает формат логов. Затем обработчики добавляются к логгеру.

Теперь, вызывая методы logger.debug() , logger.info() , logger.warning() , logger.error() и logger.critical() , можно выводить логи на стандартный вывод и записывать их в файл одновременно.

Дополнительно можно настроить уровень логирования для каждого из обработчиков и логгера в целом. Это позволяет более гибко настраивать процесс ведения логов, например, выводить на экран только сообщения уровня ERROR и выше, а в файл записывать все сообщения.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *