Поиск…


Синтаксис

  • Log.v(String tag, String msg, Throwable tr)
  • Log.v(String tag, String msg)
  • Log.d(String tag, String msg, Throwable tr)
  • Log.d(String tag, String msg)
  • Log.i(String tag, String msg, Throwable tr)
  • Log.i(String tag, String msg)
  • Log.w(String tag, String msg, Throwable tr)
  • Log.w(String tag, String msg)
  • Log.e(String tag, String msg, Throwable tr)
  • Log.e(String tag, String msg)

параметры

вариант Описание
-b (буфер) Загружает альтернативный буфер журнала для просмотра, например, события или радио. Основной буфер используется по умолчанию. См. Просмотр альтернативных буферов журнала.
Очищает (очищает) весь журнал и выходит.
-d Сбрасывает журнал на экран и выходит.
-f (имя файла) Записывает вывод сообщения журнала в (имя файла). По умолчанию используется стандартный вывод.
Распечатывает размер указанного буфера журнала и завершает работу.
-n (count) Устанавливает максимальное количество повернутых журналов (количество). Значение по умолчанию - 4. Требуется опция -r.
-r (кбайты) Поворачивает файл журнала каждый (кбайт) вывода. Значение по умолчанию - 16. Требуется опция -f.
-s Устанавливает спецификацию фильтра по умолчанию для молчания.
-v (формат) Устанавливает формат вывода сообщений журнала. По умолчанию используется короткий формат.

замечания

Определение

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

Когда использовать

Если вы планируете использовать методы System.out Java для печати на консоли вместо использования одного из методов журнала журнала Google, то вы должны знать, что они в основном работают одинаково. Однако лучше избегать использования методов Java, потому что дополнительная информация и форматирование, предоставляемые методами журнала Android, более выгодны. Кроме того, методы печати System.out перенаправляются на метод Log.i() .

Полезные ссылки

Фильтрация вывода logcat

Полезно отфильтровать вывод logcat, потому что есть много сообщений, которые не представляют интереса. Чтобы отфильтровать выход, откройте «Android Monitor» и нажмите на раскрывающийся список в правом верхнем углу и выберите « Редактировать настройку фильтра»

Монитор Android

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

^(?!(HideMe|AndThis))

Это можно ввести, следуя этому примеру:

Создать новый фильтр логарифма

Вышеприведенное является регулярным выражением, которое исключает входы. Если вы хотите добавить еще один тег в черный список , добавьте его после трубы | персонаж. Например, если вы хотите сделать черный список «GC», вы должны использовать такой фильтр:

^(?!(HideMe|AndThis|GC))

Для получения дополнительной документации и примеров посетите журнал и использование Logcat

логирование

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


Основная регистрация

Класс Log является основным источником написания журналов разработчиков, указав tag и message . Тег - это то, что вы можете использовать для фильтрации сообщений журнала, чтобы определить, какие строки относятся к вашей конкретной Деятельности. Просто позвоните

Log.v(String tag, String msg);

И система Android напишет сообщение logcat:

07-28 12:00:00.759 24812-24839/my.packagename V/MyAnimator: Some log messages
 └ time stamp             |  app.package┘     |    └ any tag  |
     process & thread ids ┘          log level┘               └ the log message

СОВЕТ:
Обратите внимание на идентификатор процесса и идентификатор потока. Если они одинаковые - журнал поступает из основного / пользовательского потока!

Любой тег можно использовать, но обычно используется имя класса как тег:

public static final String tag = MyAnimator.class.getSimpleName();

Уровни журнала

Регистратор Android имеет 6 разных уровней, каждый из которых служит определенной цели:

  • ERROR : Log.e()
    • Используется для указания критического сбоя, это уровень, напечатанный при бросании Exception .
  • WARN : Log.w()
    • Используется для указания предупреждения, в основном для восстановления отказов
  • INFO : Log.i()
    • Используется для указания информации более высокого уровня о состоянии приложения
  • DEBUG : Log.d()
    • Используется для записи информации, которая была бы полезной при отладке приложения, но будет мешать при запуске приложения
  • VERBOSE : Log.v()
    • Используется для регистрации информации, которая отражает мелкие детали о состоянии приложения
  • ASSERT : Log.wtf()
    • Используется для регистрации информации о состоянии, которое никогда не должно происходить.
    • wtf означает «Что такое ужасная неудача».

Мотивация для регистрации

Мотивация для ведения журнала - это легко найти ошибки, предупреждения и другую информацию, взглянув на цепочку событий из приложения. Например, представьте приложение, которое читает строки из текстового файла, но неправильно предполагает, что файл никогда не будет пустым. Трассировка журнала (приложения, которое не регистрируется) выглядит примерно так:

E/MyApplication: Process: com.example.myapplication, PID: 25788
                          com.example.SomeRandomException: Expected string, got 'null' instead

Вслед за кучей следов стека, которые в конечном итоге приведут к нарушительной линии, где переход с помощью отладчика в конечном итоге приведет к проблеме

Тем не менее, трассировка журнала приложения с включенным протоколированием может выглядеть примерно так:

V/MyApplication: Looking for file myFile.txt on the SD card
D/MyApplication: Found file myFile.txt at path <path>
V/MyApplication: Opening file myFile.txt
D/MyApplication: Finished reading myFile.txt, found 0 lines
V/MyApplication: Closing file myFile.txt
...
E/MyApplication: Process: com.example.myapplication, PID: 25788
                          com.example.SomeRandomException: Expected string, got 'null' instead

Быстрый взгляд на журналы, и очевидно, что файл был пуст.


Что нужно учитывать при регистрации:

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

Чтение журналов:

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

Спектакль:

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

Безопасность:

Недавно на рынок Google Play были добавлены несколько приложений для Android, которые позволяют пользователю просматривать журналы всех запущенных приложений. Это непреднамеренное отображение данных может позволить пользователям просматривать конфиденциальную информацию. Как правило, всегда удаляйте журналы, которые содержат непубличные данные, прежде чем публиковать свое приложение на рынке.


Заключение:

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


Для получения дополнительной документации и примеров посетите журнал и использование Logcat

Вход со ссылкой на источник непосредственно с Logcat

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

В следующем коде этот вызов:

MyLogger.logWithLink("MyTag","param="+param);


Это приведет к:

07-26...012/com.myapp D/MyTag: MyFrag:onStart(param=3)  (MyFrag.java:2366) // << logcat converts this to a link to source!

Это код (внутри класса MyLogger):

static StringBuilder sb0 = new StringBuilder(); // reusable string object

public static void logWithLink(String TAG, Object param) {
    StackTraceElement stack = Thread.currentThread().getStackTrace()[3];
    sb0.setLength(0);
    String c = stack.getFileName().substring(0, stack.getFileName().length() - 5); // removes the ".java"
    sb0.append(c).append(":");
    sb0.append(stack.getMethodName()).append('(');
    if (param != null) {
        sb0.append(param);
    }
    sb0.append(") ");
    sb0.append(" (").append(stack.getFileName()).append(':').append(stack.getLineNumber()).append(')');
    Log.d(TAG, sb0.toString());
}

Это базовый пример, его можно легко расширить, чтобы выпустить ссылку на вызывающего абонента (подсказка: стек будет [4] вместо [3]), и вы также можете добавить другую соответствующую информацию.

Использование Logcat

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

Выход Logcat можно отобразить в Android Monitor Android Monitor или с помощью командной строки adb.

В Android Studio

Показать, нажав значок «Android Monitor»: введите описание изображения здесь Или нажав Alt + 6 на Windows / Linux или CMD + 6 на Mac.

через командную строку:

Простое использование:

$ adb logcat

С отметками времени:

$ adb logcat -v time

Фильтр по определенному тексту:

$ adb logcat -v time | grep 'searchtext'

Здесь доступно множество опций и фильтров для logcat командной строки , описанных здесь .
Простым, но полезным примером является следующее выражение фильтра, которое отображает все сообщения журнала с «ошибкой» уровня приоритета по всем тегам:

$ adb logcat *:E

Создание регистрационного кода

Live templates Android Studio Live templates могут предлагать довольно много ярлыков для быстрого ведения журнала.
Чтобы использовать Live-шаблоны, все, что вам нужно сделать, это начать вводить имя шаблона и нажать TAB или ввести, чтобы вставить инструкцию.

Примеры:

  • logi → превращается в → android.util.Log.i(TAG, "$METHOD_NAME$: $content$");
    • $METHOD_NAME$ будет автоматически заменено вашим именем метода, и курсор будет ждать заполнения содержимого.
  • loge → тот же, для ошибки
  • и т. д. для остальных уровней регистрации.

Полный список шаблонов можно найти в настройках Android Studio ( ALT + s и введите «live»). Также можно добавить свои собственные шаблоны.

Если вы обнаружите, что Live templates для Android Studio недостаточно для ваших нужд, вы можете рассмотреть плагин Android Postfix

Это очень полезная библиотека, которая поможет вам избежать записи строки журнала вручную.

Синтаксис абсолютно прост:

.log - Регистрация. Если существует постоянная переменная «TAG», она использует «TAG». Кроме того, он использует имя класса.

введите описание изображения здесь

Использование Android Studio

  1. Скрыть / показать распечатанную информацию: Скриншот

  2. Контрольная многословия ведения журнала: Скриншот логов

  3. Отключить / включить окно открытия журнала при запуске приложения запуска / отладки Отключить скриншот открытия журнала

Очистить журналы

Чтобы очистить (очистить) весь журнал:

adb logcat -c


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow