Что такое уровень журнала на андроид
Уровни журнала Android
Android поддерживает различные уровни журналов, Verbose, Debug, Info, Warn и Error. Я понимаю, как работают уровни ведения журнала; Меня больше интересует типичный результат, ожидаемый для заданного уровня.
Например, при разработке приложения мне может быть любопытно, когда какой-то метод что-то делает (это часто бывает для целей отладки). Я просмотрю журналы, чтобы убедиться, что методы вызываются в ожидаемом порядке, если сетевой ответ – это то, что, как я думаю, должно быть, если парсеры найдут нужную информацию и т. Д.
Почему кто-то использует Verbose vs Debug vs Info?
С точки зрения разработчика, для первого, второго или стороннего приложения не все журналы для целей отладки? (Предполагая, что разработчики не смотрят журналы для удовольствия … Я не такой садистский)
С точки зрения потребителя, когда s *** попадает в вентилятор, и им необходимо обратиться в службу поддержки клиентов, потому что их супер важное / деловое приложение не работает, разработчик использует журнал для целей отладки.
Единственная причина, по которой я мог видеть использование подробностей или информации, – это, вероятно, операции сбора данных / хранилища данных. Если да, зачем использовать verbose vs info.
Не уверен. Если я злоупотребляю этим или если инфраструктура андроида …
Я в основном следую тому, что должен сказать Томаш Нуркевич при рассмотрении уровня ведения журнала:
ОШИБКА – случилось что-то ужасное, что нужно немедленно расследовать. Никакая система не может переносить элементы, зарегистрированные на этом уровне. Пример: NPE, недоступная база данных, критически важный случай использования не может быть продолжен.
WARN – процесс может быть продолжен, но проявляйте особую осторожность. Пример: «Приложение, запущенное в режиме разработки» или «Консоль администрирования не защищена паролем». Приложение может переносить предупреждающие сообщения, но они всегда должны быть оправданы и проверены.
INFO – Важный бизнес-процесс завершен. В идеальном мире администратор или продвинутый пользователь должен понимать сообщения INFO и быстро узнать, что делает приложение. Например, если заявка касается бронирования авиабилетов, в каждом билете должно быть только одно заявление INFO, в котором говорится: «[Кто] забронировал билет с [Где] до [Где]». Другое определение сообщения INFO: каждое действие значительно изменяет состояние приложения (обновление базы данных, внешний системный запрос).
VERBOSE – очень подробная информация, предназначенная только для разработки. Вы можете сохранять сообщения трассировки в течение короткого периода времени после развертывания в рабочей среде, но относить эти операторы журнала как временные, которые должны или могут быть отключены в конечном итоге. Различие между DEBUG и VERBOSE является наиболее сложным, но если вы поместите инструкцию регистрации и удалите ее после того, как функция была разработана и протестирована, она, вероятно, должна быть на уровне VERBOSE.
Мой самый любимый уровень – WTF (2.2+), который, как предполагается, будет означать «Какая ужасная неудача», для ситуаций, которые никогда не должны происходить.
Обычно я использую «информацию» для простых сообщений.
Уровни ведения журнала для Android
у меня возникли некоторые трудности с настройкой ведения журнала Android. Вот как выглядит мой код:
довольно просто, не так ли?
, у меня совсем немного труда получить Log.isLoggable(«MY_TAG», Log.VERBOSE) возвращает true.
Per http://developer.android.com/reference/android/util/Log.html, я попытался Добавить локальный.файл prop в каталог /data/, который выглядит следующим образом:
но не повезло. Я тоже попробовал:
но это не сработало.
любые идеи о том, что я делаю неправильно здесь? Я запускаю Android 2.1-update1 на Nexus 1, если это имеет значение.
3 ответов
кажется, что более поздние версии Андроид /data/local.prop для записи только root. The adb push команда, по-видимому, изначально создает файлы с предоставлением каждому доступа для чтения/записи (потому что маска файла по умолчанию 777 ). Андроид, мудро, игнорирует /data/local.prop так как это может быть угрозой безопасности.
я экспериментировал только с Android 2.3.3, и 4.1.2. У первого нет проблем с чтением a local.prop это мир, доступный для записи, в то время как последний, кажется, молча игнорировать содержимое файла.
создание local.prop файл, как описано в исходном вопросе:
а затем, нажав его на устройство следующим образом, кажется, делает трюк:
вы можете дважды проверьте, чтобы убедиться, что значения в local.prop читали исполнитель:
используя adb shell setprop log.tag.MyAppTag VERBOSE также работать. Проблема в том, что значения свойств теряются после перезагрузки.
важная цель-не отправлять производственное приложение с тонной вызовов журнала, оставшихся в нем, увеличивая его размер и даже, возможно, даже влияя на его производительность.
для этого я рекомендую поместить эти константы в начало каждого класса, который будет иметь вызовы журнала:
теперь, где вы входите, сделайте это:
включите журналы, изменив DEBUG постоянное значение true. (Если вы хотите, вы могли бы иметь один класс с этими статика для всего кода вашего приложения. Это имеет смысл для небольшого приложения, но по мере того, как все становится большим, приятно решить, какие части включить вход в систему.)
это подход, который принимает много рамок Android. Например,ManagerService Активность.
это имеет эти константы вверху, и различные строки журнала, разбросанные по всему на их основе. (И куча других констант суб-отладки для различных аспектов этого, так как этот файл смехотворно глупо велик.)
Видео: Как пользоваться режимом разработчика в Android
Не раз нам приходили комментарии с просьбой рассказать поподробнее о режиме разработчика в Android. Многие знают, что это такое, но раз вопрос есть, то на него надо ответить.
Активация режима разработчика
Сначала надо активировать режим разработчика. Для этого надо перейти в настройки, найти вкладку “О телефоне”, а в ней поле “Номер сборки” и несколько раз часто тапнуть по нему. После этого в настройках самого смартфона появится новый пункт, который будет называться “Для разработчиков”.
Перед тем как начинать что-то делать, имейте в виду, что все действия производятся на свой страх и риск. Скорее всего, все будет нормально, но есть вероятность, что что-то может пойти не так и нормальное функционирование телефона будет нарушено.
Отчет об ошибке
Можно сформировать отчет об ошибке и отправить его туда, куда нужно. Но в некоторых случаях этот пункт недоступен или отсутствует вовсе. После нажатия на этот пункт начнет создаваться отчет, который создается несколько минут, а за прогрессом можно наблюдать в центре уведомлений. Когда отчет будет сформирован, его можно будет отправить, нажав на него, или отменить отправку, смахнув его в сторону, или сбросив все уведомления.
Пароль для резервного копирования
Пароль, который вводится для того, чтобы защитить ваши резервные копии от несанкционированного доступа, задается самим пользователем и может быть любым. Для того чтобы его задать, нужно открыть этот пункт настроек и ввести его. Если делаете это первый раз, то достаточно заполнить вторую и третью строчку. Если меняете, то надо вводить и установленный ранее пароль. Также можно и удалить пароль. Для этого надо ввести пароль, который был до этого, но не вводить новый.
Не выключать экран
Этот пункт может понадобиться когда вы хотите, чтобы при подключении питания экран оставался постоянно включенным. В обычной жизни это может пригодиться для того, чтобы пользоваться телефоном как часами или навигатором. Но злоупотреблять этим режимом не стоит, так как ресурс экрана не вечен.
Включить режим трансляции операций
Этот режим позволяет сохранять пакеты HCI Bluetooth в отдельном файле, который можно будет найти в специальной папке в памяти телефона. Нужно это в основном для разработчиков и специалистов по безопасности.
Заводская разблокировка
Пункт дает возможность разблокировать загрузчик. Не разблокирует, а только позволяет это сделать. Но если вы в этом не разбираетесь, то тоже лучше не заниматься этим и пройти мимо этого пункта. Тем более, если разблокировать его, то функции защиты не будут работать на устройстве.
Работающие приложения
Этот пункт наоборот может быть полезен простым пользователям, так как тут можно посмотреть сколько памяти “съедает” каждое приложение и остановить его. Если есть какие-то проблемы, то отсюда же можно отправить отчет об ошибке и просто поподробнее изучить сами приложения.
Отладка по USB
Отладка по USB нужна для того, чтобы можно было устанавливать соединение с компьютером используя Android Debug Bridge. Как правило это требуется для получения root-прав и модификации прошивок.
Запретить доступ для USB-отладки
Для отладки по USB требуется авторизовать компьютер для этой работы. Если вы не хотите, чтобы авторизованные ранее компьютеры имели доступ к отладке по USB и хотите, чтобы для них требовалась повторная авторизация, то для этого надо просто запретить доступ для USB-отладки.
Отчет об ошибке
Если активировать этот пункт, то в меню будет добавлена кнопка, которая позволяет создавать и отправлять отчеты об ошибках. По-умолчанию такая кнопка не активна, но после активации ее можно найти, если удерживать кнопку Power как для выключения. Раньше ее там не было, а после активации этого пункта она появляется.
Выбор приложения для фиктивных местоположений
В Android можно на программном уровне изменить свое местоположение не сходя с места. В некоторых играх, или приложениях это может пригодится. Этим можно будет разыгрывать друзей, или обманывать кого-то по поводу своего местоположения. В любом случае, все это можно сделать. Для этого надо скачать какое-нибудь приложения по запросу “Fake GPS” а настроить в нем новое положение. После этого в пункте “Выбрать приложение для фиктивных местоположений” выбрать его.
Сертификация беспроводных мониторов
Тут все понятно из названия. Можно включить отображение параметров сертификации беспроводных мониторов, если вам это нужно
Подробный журнал Wi-fi
Если есть желание подробно отслеживать работу Wi-Fi соединений, то вам сюда. Активировав этот режим, можно включить более подробные отображения в журнале.
Переключаться на мобильную сеть
Активация этого пункта позволит переключаться на мобильную сеть для передачи данных когда сигнал Wi-Fi становится слишком слабым. Но в этом случае надо не забывать про объем включенного трафика или его стоимость, если у вас не безлимит. Странно, что этот пункт спрятали сюда. Например, в iOS это называется ассистент Wi-Fi и находится в обычных настройках.
Не отключать передачу данных
Для быстрого переключения между сетями можно активировать значение, которое позволит не прекращать передачу данных через мобильную сеть даже при активном Wi-Fi подключении. В этом режиме будет проще и быстрее переходит от одной сети к другой.
Конфигурация USB
В этом пункте можно настроить то, что мы настраиваем в шторке уведомлений, когда телефон подключен к компьютеру. А именно режим работы USB. Но в данном случае можно выбрать не просто значение, а значение по умолчанию.
Отключить абсолютный уровень громкости
Этот пункт позволяет отключить абсолютный уровень громкости Bluetooth при возникновении проблем на удаленном устройстве. Под этим подразумевается, например, слишком громкий звук или невозможность его регулировки.
Визуальный отклик
Полезная вещь для любителей скринкаста. Она позволяет показать то место на экране, которого вы коснулись. На каждый день вряд ли пригодится, а для съемки скринкаста, обучающего видео или чего-то подобного может подойти.
Отображение касания
Для простого пользователя это больше просто развлечение, чем полезный инструмент, но тем не менее он позволяет отобразить зафиксированные точки касания экрана. Точки выстроятся в линию, если вы будете двигать пальцем по экрану. Также это может быть полезным, если вы захотите убедиться, что не сбилась калибровка экрана.
Показывать обновление поверхности
Если активировать данный пункт, то экран будет динамично подсвечиваться после обновления его содержимого. Для простого пользователя это может быть полезно например в том случае, когда телефон лежит с включенным экраном и в этот момент приходит сообщение или уведомление. Так будет проще не пропустить его.
Показывать границы элементов
Это пункт не имеет особой полезной нагрузки для простого пользователя. Просто можно увидеть где находятся границы элементов управления и экранных клавиш. Иногда может быть полезным, если хочеться проверить соответствие касаний расположенным элементам.
Написание справа налево
Этот пункт позволит расположить ползунки слева, а текст прижать к правому краю экрана. Просто все станет не так, как это общепринято. Нужно это возможно для левшей или просто людей, которые хотят сделать что-то необычное и немного изменить рутинный интерфейс своего смартфона.
Анимация
Настройка длительности анимации позволит визуально ускорить работу системы. Или наоборот сделать ее очень медленной. Второе возможно понадобится для того, чтобы разыграть не особо разбирающегося в тонкостях настроек друга.
Эмуляция дополнительных экранов
Позволит разработчикам имитировать различные размеры и разрешения экрана.
GPU-ускорение
Настройка позволяет заставить приложения использовать ускорение, если для них это не предусмотрено по умолчанию. Может существенно помочь в работе с графикой, но может и все испортить. Не рекомендовали бы увлекаться работой с этим пунктом.
Показывать обновление экрана
Настройка позволяет подсвечивать области экрана, которые были отрисованы графической подсистемой.
Включить 4x MSAA
Включение принудительной множественной выборки сглаживания. Но естественно надо иметь ввиду, что как и с любым графическим процессом, чем больше сглаживание, тем лучше выглядит картинка, но производительность при этом снижается.
Отключение передачи аудио (USB)
Настройка позволяет отключить автоматическую маршрутизацию на внешние USB-устройства.
Строгий режим
Настройка активирует режим мигания экрана, в том случае, если приложение использует главный поток для выполнения длительной и интенсивной операции.
Загрузка процессора
Позволяет отобразить на экране в виде цветной диаграммы загрузку центрального процессора, или графического чипа. При любых действиях диаграмма меняется и прокручивается. При этом, загрузку графического чипа можно отображать на экране, а можно записывать в специальный файл.
Не сохранять действия
Активация этого пункта позволит удалять сводку действий приложения после того как оно будет закрыто. Двоякое явление. Не всегда это будет хорошо.
Лимит фоновых процессов
Полезная опция для сохранения аккумулятора и производительности смартфона. Из названия видно, что она устанавливает лимит на количество фоновых процессов, которые могут работать одновременно.
Все ANR
Если хочется видеть уведомление системы о том, что приложение не работает или работает не так как должно, то активация этого пункта позволит получать подобные уведомления.
Неактивные приложения
В этом пункте находится встроенный диспетчер неактивных приложений, который позволит регулировать их активность.
Разрешить сохранение на внешние накопители
Если штатно для приложения не предусмотрена возможность установки на внешний накопитель, то активация этого пункта позволит это сделать независимо от “желания” приложения. Но не стоит забывать, что часто приложения не просто так отказываются устанавливаться на внешний накопитель и для этого есть свои причины. Поэтому, если активируете эту возможность, будьте готовы, что что-то может пойти не так.
Изменение размера многооконности
Настройка позволяет менять размер окон в режиме многооконности независимо от того, согласно ли на это приложение. Опять же, если разработчик был против этого, то наверняка у него были не это причины и лучше не лезть в это.
Отключение режима разработчика
Как и было сказано в начале, режим разработчика можно отключить. Хотя отключается он немного другим способом, нежели включается. Для отключения надо будет открыть настройки и перейти в раздел “приложения”. После этого нужно будет найти приложение “Настройки” и зайдя в него стереть все данные. Если это сделать, режим разработчика будет отключен. А если понадобится включить его снова, то сделать это можно будет там же способом, который был описан в начале.
Итоги
Мы рассказали вам про меню настроек разработчика и что означают основные пункты. Как вы поняли, большинство пунктов не для простых пользователей. Они понадобятся или тем, кто действительно является разработчиком, или тем, кто хочет на свой страх и риск поподробнее разобраться в возможностях операционной системы от Google. Еще раз добавим, что если навыков в этой области мало, то лучше даже не пробовать.
Русские Блоги
Журнал Android
За годы разработки Android я часто сталкиваюсь с таким явлением: в одном приложении часто используется несколько методов обработки журналов с разными стилями, что иногда сбивает с толку разработчиков. В то же время у автора часто возникают неоднозначные вопросы: существует несколько уровней журнала, какой уровень журнала используется при каких обстоятельствах? При каких обстоятельствах можно использовать журнал, как использовать журнал и почему? В Android так много журналов, как эффективно просматривать журналы? Помня об этих вопросах, автор произвел определенный вид использования журналов, основываясь на обычном опыте разработки, документах спецификации журналов компании и соответствующей информации в сети. Что касается самого основного использования и введения журнала, эта статья не будет вдаваться в подробности, я надеюсь, что эта статья может помочь некоторым людям, и я надеюсь, что большие коровы дадут лучшие мнения и предложения, которые помогут мне расти!
Основное содержание этой статьи таково:
1. Классификация журналов
1. Общий уровень журнала
Система Android предоставляет разработчикам хороший инструмент для ведения журнала android.util.Log. Существует 5 наиболее часто используемых методов, как показано ниже, а уровень вывода журнала также назначается 5 уровням по очереди:
(5) Log.e: e обозначает информацию об ошибке и обычно используется для вывода исключений и сообщений об ошибках. Журнал этого уровня будет выводить информацию только этого уровня. Как правило, система Android будет использовать этот уровень журнала при выводе фатальной информации, такой как грубость.
2. Связанный исходный код (на основе android-26, то же ниже)
Исходный код android.util.Log.java дает четкое описание уровня журнала, а также, в свою очередь, дает метод использования. Соответствующие фрагменты исходного кода следующие:
3. Интерпретация исходного кода
Помимо четких пояснений в примечаниях, мы также можем обратить внимание на дополнительную информацию
(1) Класс Log.java модифицируется с помощью final и не может быть унаследован. Он не имеет подклассов. В то же время он не наследует другие классы и не имеет родительского класса. Логическая взаимосвязь этого типа относительно проста и легко читается. Читатели имеют возможность прочитать исходный код и определенно получат более глубокое понимание.
(2) Видно, что уровень вывода журнала также включает ASSERT, а функция, используемая для вывода, также включает Log.wtf (. ) и т. Д. В исходном коде также упоминается, что обычно используются только пять вышеупомянутых уровней журнала. Для ASSERT Я не буду много говорить о Log.wtf () и т. Д., Просто разберитесь с ним, и нет необходимости использовать его при нормальной разработке.
(3) Уровни журнала находятся в порядке от 2 до 7. Странным явлением является то, что нет 0 и 1, и он не оценивается от 0 или 1. Что касается причин, читатели могут изучать, если им интересно.
(4) В комментарии перед именем класса также упоминается, что строка, переданная в журнал, будет потреблять системные издержки. Таким образом, мы не можем бесконтрольно использовать журнал, мы должны обращать внимание на навыки и характеристики использования.
Читатели могут узнать больше!
2. Спецификация использования журнала
У разных компаний разные требования и спецификации для использования Log.Далее я буду использовать спецификации, встреченные в ходе работы, чтобы проиллюстрировать спецификации использования Log (конечно, из комментариев к исходному коду в предыдущем разделе вы также можете увидеть некоторые подсказки. ):
1. В приложении журналы уровня VERBOSE, как правило, не допускаются. Для журналов уровня INFO и WARN разрешено печатать очень небольшой объем важной информации. Это требование в действии. На самом деле, эти три уровня часто используются в исходном коде системы. Например, Когда система печатает общую информацию об исключениях, используется журнал уровня WARN.
2. Уровень ERROR разрешается использовать только при очень серьезной ошибке.Если общая информация заключается в использовании уровня DEBUG (преимущества использования уровня DEBUG будут обсуждены позже, когда будет упомянуто Log.isLoggable ()). Когда система сообщает о критическом исключении, используется журнал уровня ОШИБКИ.
3. Запрещается распечатывать личную информацию пользователя, такую как IMEI, номер мобильного телефона, пароль, номер банковской карты и т. Д. В зарубежных странах некоторые законы также содержат строгие требования к содержанию журнала.
4. Не печатайте в журнале слишком много конкретных деталей реализации, поскольку это приведет к угадыванию дизайна архитектуры и реализации кода через журнал.
5. Детали основного алгоритма или механизма не могут быть отображены в журнале, например информация, связанная с основным алгоритмом, поток вызовов функций между приложениями и фреймворками и т. Д.
6. Запрещено печатать журнал в цикле. В условиях цикла, частых операциях, часто вызываемых интерфейсах, событиях ACTION_MOVE, повторной печати и т. Д. Использование журнала должно контролироваться. В единицу времени приложения разной природы предъявляют определенные требования к количеству журналов, и существуют определенные ограничения на размер каждого журнала. Из-за большого или частого журнала это оказывает определенное влияние на производительность приложения. Даже если есть переключатель журнала для управления выводом журнала, объединение строк потребует некоторой производительности и ресурсов.
7. Вы должны быть осторожны при печати захваченного стека исключений. Если вам не нужно распечатывать стек для определения проблемы, постарайтесь не печатать стек. Если стек действительно нужен, попробуйте контролировать частоту печати в том же стеке.
8. Старайтесь не изменять журнал, который идет с исходным кодом Android. В журнале событий категорически запрещено изменять журнал, поставляемый с исходным кодом.
9. Тег в журнале обычно называется в честь разделенного функционального модуля, и лучше использовать имя класса и имя метода в качестве префикса для информации журнала. Это сделано для облегчения позиционирования при просмотре журнала, что очень полезно для анализа проблем.
Вышеупомянутое не только включает спецификации использования, но также некоторые советы по использованию журнала. Некоторые из этих спецификаций различаются в зависимости от компании и разной степени строгости, а некоторые требуют единообразного соответствия их спецификациям. Читатели могут рассмотреть их в зависимости от конкретной ситуации.
В-третьих, просмотреть журнал в Android Studio
Android Studio предоставляет разработчикам хороший инструмент для просмотра журналов.Разработчики могут открыть представление журнала следующими способами: View> Tool Windows> Logcat или использовать комбинацию клавиш по умолчанию Alt + 6, чтобы открыть / скрыть представление Logcat. Вот краткое введение в использование этого инструмента.
1. Выберите условия фильтрации в Logcat.
На скриншоте ниже отмечены общие функции использования представления Logcat в Android Studio.Разработчики могут выбирать условия фильтрации в соответствии с реальной ситуацией.
2. Настройка цвета информации журнала.
При просмотре журналов есть небольшая хитрость: для просмотра журналов разных уровней Android Studio устанавливает разные цвета для информации журнала разных уровней. Разработчики также могут установить цвет или другие атрибуты в соответствии со своими предпочтениями, чтобы при просмотре журнала было легко различать уровень журнала, и при просмотре было ощущение иерархии. Путь настройки: Файл> Настройки> Редактор> Цвета и шрифты> Android Logcat. Как показано на скриншоте ниже:
После завершения настройки используйте следующий код для проверки
Информация журнала, напечатанная в представлении logcat, выглядит следующим образом:
Хотя разработчики могут устанавливать цвет журнала и другие атрибуты в соответствии со своими предпочтениями, автор по-прежнему рекомендует читателям стараться следовать соглашениям об общих именах, например, Журналы с уровнем ERROR часто имеют красный цвет 。
3. Описание информации журнала в Logcat
В-четвертых, напишите простой в использовании вспомогательный класс Log.
Базовые навыки использования журнала легко освоить, но есть еще много навыков, которые необходимо освоить, если их можно гибко использовать в проектах.
1. Сценарии, с которыми часто сталкиваются разработчики
При конкретной разработке разработчики часто сталкиваются со следующими ситуациями:
(1) При отладке часто печатается большое количество журналов, чтобы помочь в анализе проблем, но эти журналы должны быть закрыты, когда версия должна быть выпущена для пользователей.
(2) Разработчики часто устанавливают переменную в коде, например логическое isDebug и т. Д., Для управления печатью / закрытием журнала. Но каждый раз, когда вы выпускаете версию, вам нужно вручную изменять это значение, что неудобно в использовании и легко забыть.
(3) Для пользовательской версии, выпущенной для пользователей, журнал закрывается. Когда необходимо проанализировать ошибку, в журнале содержится слишком мало информации, из-за чего разработчики часто думают, что «умелые женщины не могут готовить без риса», что не способствует анализу проблемы.
(4) После получения информации журнала часто бывает непросто выяснить, к какой функции относится эта информация, к какому типу и каким методом она распечатывает.
(5) Некоторые журналы необходимо закрыть в пользовательской версии, но некоторые журналы необходимо хранить все время, и эти два типа журналов нужно обрабатывать по-разному.
Подобные обстоятельства, по-видимому, постоянно испытывают разработчики.
2. Код вспомогательного инструмента
Опытные разработчики обычно пишут вспомогательный класс Log, чтобы максимально избежать этих проблем.Автор также суммировал набор кодов во время разработки, как показано в следующем коде:
3. Использование и описание вспомогательных классов.
(1) Распечатать основной журнал
Согласно комментариям в коде, должно быть легко понять использование и значение этих методов. Кратко продемонстрируем пример использования
Вызовите Logger.d (className, methodName, msg) в том месте, где журнал должен быть напечатан; вот и все, ниже показан выходной журнал
(2) Стек вызовов функции печати printStackTraceInfo
(3) Распечатать информацию об исключении printExceptionInfo (Exception pEx)
Этот метод в основном используется для печати собранной информации об исключении. На снимке экрана ниже четко показана причина исключения, место его возникновения и стек вызовов. SDK также поставляется с методом e.printStackTrace (), который печатается самой системой (снимок экрана 2). Однако информация для печати делится на несколько частей информации для печати. При поиске по тегу можно искать только информацию, содержащую тег, и информация не может быть отображена в целом. Пользовательский метод преодолевает этот момент и удобен для всех. Посмотреть. Конечно, читатели могут выбирать, использовать ли функции, входящие в SDK, в соответствии со своими предпочтениями.
Снимок экрана 1: Индивидуальные распечатки отклонений от нормы
Снимок экрана 2: Аномальная печать, связанная с sdk
(4) Используйте Log.isLoggable (tagName, level)
В пункте 1 (3) данного обзора упоминается, что журнал отладочной версии закрыт в пользовательской версии, что значительно затрудняет анализ ошибки. Следовательно, в условии isTagLoggable (. ) для определения того, разрешить ли печать журнала, добавляется условие «или», Log.isLoggable (тег, уровень), которое решает проблему невозможности распечатать часть журнала в пользовательской версии.
1) Основное использование
После добавления этого условия в системе пользовательских версий просто выполните следующую команду в командном поле:
После ввода этой команды будут выведены все журналы с именем «FunctionName» в качестве имени тега и уровнем DEBUG и выше. Чтобы вернуться в состояние, не предназначенное для печати, просто перезагрузите телефон.
2) Связанный исходный код
3) Интерпретация исходного кода
Основываясь на приведенном выше исходном коде и комментариях, автор извлек некоторую информацию:
Ниже приводится тестовая функция.
5) Результаты тестирования
А) Никакая команда не выполняется, результат теста:
В) Выполнение заказа
Здесь мы также видим, что значение Log.isLoggable (TAG, Log.DEBUG) по умолчанию ложно. Как мы упоминали во втором пункте, когда мы говорили о спецификации использования журнала во втором разделе, общая информация печатается с журналом уровня DEBUG в сочетании с приведенным выше вспомогательным классом журнала, вы, конечно же, можете почувствовать некоторые преимущества здесь, читатели Вы также можете использовать эти условия для разработки собственных удобных методов в соответствии с вашим собственным пониманием.
6) Рекомендуемая литература
Пять, получение журнала
После разработки стратегии ввода журнала вы можете получить журнал. В основном есть следующие способы получить журнал, с которым контактировал автор
1. Получено из средств разработки.
Например, представление Logcat, которое поставляется с упомянутой выше Android Studio, также доступно в eclipse, что проще в использовании. Этот метод в основном используется разработчиками, а тестировщики обычно не используют аналогичные инструменты в среде IDE.
2. adb поставляется с инструментом logcat
Командная функция также относительно мощна, ее очень удобно использовать, не требуется дополнительных IDE, adb настроен на компьютере, подключен к мобильному телефону, и вы можете ввести команду в поле команд. Этот инструмент также имеет множество команд и мощных функций.К сожалению, я не часто использую эту функцию. В основном я использую собственные инструменты IDE и мобильный журнал мобильного телефона.
3. Мобильный телефон имеет собственную функцию записи журнала.
Как правило, мобильные телефоны также поставляются с инструментами для записи журналов. Различные марки и модели имеют разные способы захвата системных журналов и форматов журналов. Ниже приведен пример определенной модели Biya.
(1) Введите пароль на клавиатуре набора номера (вы можете выполнять поиск в Интернете, разные бренды имеют разные пароли, и типы журналов, регистрируемых на одном мобильном телефоне, также различны), и вы войдете в интерфейс инструмента журнала, как показано ниже:
(2) Перед использованием нажмите кнопку «Очистить», чтобы очистить предыдущие файлы журналов, чтобы не создавать слишком много ненужных журналов и не влиять на просмотр полезной информации.
(3) Нажмите кнопку «Пуск», и система начнет сбор журналов.
(4) Начните управлять мобильным телефоном, воспроизводите ошибки и т. Д. Журналы, созданные в этот период, будут сохранены.
(5) После завершения операции нажмите кнопку «Закрыть», и система сгенерирует файл журнала.Внизу вы можете увидеть путь хранения журнала, просто найдите его по этому пути.
Шесть, просмотр и анализ журнала
После того, как вы получите файл журнала, вы можете проанализировать его. В средстве просмотра IDE Logcat и журнале, полученном в adb logcat, в основном доступно основное представление, поэтому я не буду здесь об этом говорить. Здесь мы в основном говорим об анализе журнала в MobileLog.
1. Структура документа
После входа в папку журнала вы увидите следующий список папок
Если MobileLog включен, перезагружая телефон или перезагружая его после паузы, будет создана новая папка журнала. Разработчики начинают анализ с самого последнего журнала повторения ошибок. После выбора папки журнала в течение определенного периода времени нажмите, и вы увидите следующий интерфейс
Как правило, мы обращаем внимание только на содержимое папки moblie (пока автор использовал только файлы в этом каталоге). После нажатия для входа отобразится список файлов журнала, как показано ниже:
2. Анализируйте файлы журналов
(1) Сводка файла журнала
Имя файла содержит модель, информацию о версии и тип журнала в файле. Как правило, нам нужно обращать внимание только на файлы сбоя и основные файлы, а иногда и на файлы системного журнала.
(2) Проанализировать журнал сбоев.
В файле сбоя вы можете четко увидеть время, когда произошел сбой, процесс, вызвавший сбой, и имя пакета. Обратите внимание на время сбоя: если разница во времени между сценой и сценой, которую вы воспроизводите, велика (например, более 10 минут), это может не иметь большой корреляции с проблемой, которую вы хотите анализировать.
(3) Проанализировать основной файл журнала
Основной файл часто содержит много информации журнала. Представление logcat или журнал, записанный adb logcat, упомянутый ранее, а также различные типы журналов в разных моделях мобильных телефонов имеют в основном одинаковую базовую структуру. Одно сообщение также содержит такую информацию, как дата, время, номер процесса, номер потока, уровень журнала, ТЕГ, сообщение и т. Д. Как показано ниже:
Анализируя эти журналы, автор упоминает здесь несколько часто используемых советов:
Автор также изучает и изучает навыки анализа MobileLog. Здесь мы будем медленно накапливать опыт, обобщать и медленно обновлять.
3. Анализ исходного кода
В исходном коде есть следующие коды
Исходный код также дает ровно 5 значений LOG_ID, LOG_ID_MAIN
LOG_ID_CRASH.За исключением журнала событий, остальные также находятся во взаимно однозначном соответствии. Реализация методов Log.v ()
Семь сторонних инструментов
В настоящее время существует множество отличных сторонних инструментов для управления журналами. Я использовал два: log4j и Tencent’s bugly, оба из которых относительно просты в использовании.
8. Заключение