Working with Logcat
Logcat is an important part of everyday development. If you see one of those «Force Close» or «Has Stopped» dialogs, the first thing you will want to do is examine the Java stack trace that is associated with this crash. These are logged to a facility known as Logcat, its purpose is to display all logs coming from your device. It displays logs from an emulator or a real device connected.
We can see the following messages in Logcat:
- System.out.println
- exceptions
- android.util.Log
To properly log messages from your application you should use the android.util.Log class. This class defines the familiar informational, warning, and error methods that you can filter in the Logcat pane to see just what you want to see. Every log message has a tag associated with it, which is used to identify the source of a log message. It usually identifies the class or activity where the log call occurs.
Here are some sample Log commands categorized by severity:
It’s best to use the appropriate log level for the message you want to log. It is recommend to define a unique debug tag string for each class so that you can easily track down where a log message originated. You can use this tag to filter the logging data and find only the messages you are interested in.
The recommended way to define Tag string:
How to open Logcat?
By keyboard shortcut alt + 6
By clicking the main menu bar View > Tool Windows > Logcat .
By clicking the Logcat Tool Button from the bottom of Android Studio.
The following Logcat pane will appear on bottom of Android Studio.
Following is the description of some important options highlighted in above image:
Device selection menu
App selection menu
Filter messages based on log level, where messages for your chosen level or higher will be displayed
Use the search field to filter items based on a search string
When this menu is set to Show only selected application, only those messages relating to the app selected in the menu marked as 2 will be displayed in the Logcat panel. Choosing No Filter will display all the messages generated by the device or emulator.
Logcat levels
To get the most out of your application, Logcat has several levels of log messages, so Android Studio provides multiple ways of filtering the logcat output. One method is to use the Log Level dropdown menu, to filter based on log level, open this dropdown and select anything other than the default Verbose option.
Verbose: Display all log messages
Debug: Displays log messages that are useful during development
Info: Displays expected log messages for regular usage
Warn: Displays possible issues that are not yet errors
Error: Displays issues that have caused errors
Assert: Displays issues that should never happen
Making a custom level in Logcat
Every Android log message includes a tag. You can use these tags with filters defined in Logcat. To open Logcat pane, click «Show only selected application» drop-down menu from the top right and select «Edit Filter Configuration». This opens a «Create New Logcat Filter» dialog:
Provide the following information to create a new filter:
Filter name: give a unique name.
Log Tag: Every log message has a tag associated with it, which indicates the system component the message originated from. If you want to see messages that originate from a certain system component only, you can enter that component’s tag here. It is used to identify the source of a log message. It usually identifies the class or activity where the log call occurs.
Log Message: If you only want to see messages that contain certain elements or character strings, specify them in the Log Message field.
Package Name: If you want your filter to display messages that relate to a certain package only, enter this package name here.
PID: If you only want to see messages that refer to a specific process, enter that process ID here.
Customizing log messages font colors and style
Open Android Studio Settings from the main menu File > Settings or by pressing keyboard shortcut Ctrl + Alt + S . In the search field, enter Logcat. Editor > Color & Fonts > Android Logcat preferences appears:
To change these options, you must save a copy of the current Theme by clicking the Save as button and enter some suitable name. Now select each log level one by one and apply your own font and background color, make log message bolt or italic and etc.
Note: before starting the customization, uncheck the Use inherited attributes box, otherwise you won’t be able to edit these options.
Select a log level from the list (e.g. Assert)
If you want to change font color, check Foreground and click its color box to customize the font color
To change the background color of font, check Background and click its color box to customize the background color
Check Error stripe mark to display a mark at the end of message and click its color box to customize the mark color
Check Effects then select the effect from the drop down menu (e.g. underline, strikeout, or dotted line etc) and click its color box to customize the mark color.
To apply changes, click on Apply and then OK.
How to clear logs
The «trash can» icon atop the tool strip on the left is the «clear log» tool.
Clicking it will appear to clear Logcat. It definitely clears your LogCat view, so you will only see messages logged after you cleared it, though, that this does not actually clear the logs from the device or emulator.
Note: Log has impact on performance. Excessive logging impacts device and application performance. At a minimum, debug and verbose logging should be used only for development purposes and removed prior to application publication.
Источник
Как фильтровать logcat в Android Studio?
в моем logcat слишком много вывода, поэтому я хотел бы фильтровать его с помощью некоторых ключевых слов, в основном отображая только вывод, содержащий ключевое слово(ы). Есть ли способ сделать это в Android Studio через интерфейс?
8 ответов
есть два способа сделать это, оба находятся на вкладке Android в нижней части IDE (где отображается вывод logcat).
во-первых, вы можете просто что-то вводите в поле поиска вверху, и он должен фильтровать только сообщения, содержащие введенный текст.
во-вторых, вы можете сделать расширенную фильтрацию, нажав на выпадающий список в правом верхнем углу, где должны отображаться Никаких Фильтров по умолчанию, и выберите Edit Filter Configuration и указав, что фильтр включен. Используя этот метод, вы также сохраняете фильтры и можете повторно использовать их, выбрав их в раскрывающемся списке.
скриншоты:
Что я делаю, это щелкните правой кнопкой мыши на линии, которая мне не нравится, и выберите «сложить линии, как это»
Как @free3dom сказал, что вы можете выбрать процесс, из которого вы хотите получить logcats. Вот скриншот.
Я СДЕЛАЛ ВИДЕО-УЧЕБНИК, ЧТОБЫ ПОКАЗАТЬ ВАМ, КАК= https://youtu.be/xw2qE5ko_9I
дайте вашему журналу имя. Я называл свою «Вава».
В Android Studio перейдите в Android — > редактировать конфигурации фильтров
введите имя, которое вы дали журналы. В моем случае, это называется «Вава». Вот несколько примеров типов фильтров, которые вы можете сделать. Вы можете фильтровать по системе.вон, система.err, журналы или пакет имена:
сначала объявите свои имена тегов в коде, например
затем добавьте инструкции журнала, где вы хотите вывести что-то
согласно free3dom во втором сообщении, на вкладке logcat щелкните раскрывающийся список фильтры, а затем измените конфигурацию фильтра.
в этом примере мы используем by тег журнала (regex) возможность отображения сообщений журнала для любого из трех совпадающих имен тегов с помощью трубы / разделителя (без пробелы):
одна из альтернатив, которая работает для меня, — это выбрать Show only selected application опции в меню Filter:
Я не знаю, старые ли изображения в другом ответе или я что-то пропустил, но вот обновленное изображение.
выберите Android Монитор вкладка внизу и убедитесь, что logcat выбрана вкладка. Затем введите все, что вы хотите фильтр ваш выход. Я отфильтровал мой с именем тега TAG .
просто чтобы добавить свою ошибку:
убедитесь, что при использовании эмулятора и реального устройства для переключения на устройство, которое вы отлаживаете, в раскрывающемся списке слева над вкладкой logcat.
Источник
Как фильтровать Android logcat по приложению? [дубликат]
этот вопрос уже есть ответ здесь:
- Фильтр LogCat, чтобы получить только сообщения из моего приложения в Android? 29 ответов
Как я могу фильтровать вывод Android logcat по приложению? Мне это нужно, потому что, когда я подключаю устройство, я не могу найти выход, который я хочу из-за спама от других процессов.
27 ответов:
изменить: оригинал находится ниже. Когда одной Android-студии не существовало. Но если вы хотите отфильтровать все свое приложение, я бы использовал pidcat для просмотра терминала или Android Studio. Используя pidcat вместо logcat, то теги не должны быть приложением. Вы можете просто назвать его с pidcat com.your.application
и затем если вы хотите читать журнал>
это отфильтровывает все, что не использует тот же тег.
вот пример выражения фильтра, которое подавляет все сообщения журнала, кроме тех, которые имеют тег «ActivityManager», с приоритетом » Info «или выше, и все сообщения журнала с тегом» MyApp», с приоритетом» Debug » или выше:
adb logcat ActivityManager:I MyApp:D *:S
последний элемент в приведенном выше выражении,*: S, задает уровень приоритета для всех тегов чтобы «молчать», тем самым обеспечивая отображение только сообщений журнала С» View «и» MyApp».
- V-подробный (самый низкий приоритет)
- D-Debug
- I-Info
- W — Предупреждение
- E-Error
- F-Fatal
- S-Silent (высший приоритет, на котором никогда ничего не печатается)
Привет я получил решение с помощью этого:
вы должны выполнить эту команду из терминала. Я получил результат,
Я работаю на Android Studio, есть хороший вариант, чтобы получить сообщение с помощью имени пакета. В разделе «изменить конфигурацию фильтра «вы можете создать новый фильтр, добавив свое имя пакета в поле»по имени пакета».
Если бы вы могли жить с тем, что вы входите в систему из дополнительного окна терминала, я мог бы рекомендовать pidcat (возьмите только имя пакета и отслеживает изменения PID.)
предположим, что ваше приложение с именем MyApp содержит следующие компоненты.
- MyActivity1
- MyActivity2
- MyActivity3
- MyService
чтобы отфильтровать вывод журнала из вашего приложения MyApp с помощью logcat, вы должны ввести следующее.
однако это требует, чтобы вы знали имена тегов для всех компонентов в вашем приложении, а не фильтровать с помощью имя приложения MyApp. Смотрите logcat для конкретики.
одним из решений, позволяющих фильтровать на уровне приложения, было бы добавить префикс к каждому из ваших уникальных тегов.
- MyAppActivity1
- MyAppActivity2
- MyAppActivity3
- MyAppService
теперь фильтр wild card на выходе logcat может быть выполнен с использованием префикса тега.
результатом будет выход из всего приложения.
затем: applog.sh com.example.my.package
когда мы получим какую-то ошибку из нашего приложения, Logcat автоматически покажет фильтр сеанса. Мы можем создать фильтр сеанса самостоятельно. Просто добавьте новый фильтр logcat, заполните форму имя фильтра. Затем заполните по имени приложения с помощью пакета приложений. (например : моя заявка «Адукан» и пакет «ком.адукан», поэтому я заполнить имя приложения, пакет приложений «ком.адукан»)
Если вы используете Eclipse вы можете фильтровать по приложению так же, как это возможно с Android Studio, как представлено shadmazumder.
просто зайдите в logcat, нажмите кнопку отображение сохраненных фильтров вид, потом добавить новый фильтр logcat. Он будет выглядеть следующим образом:
затем вы добавляете имя в фильтр и, в на имя приложения вы указываете пакет вашего приложения.
на моем ноутбуке Windows 7 я использую ‘ adb logcat | find «com.example.name «‘ для фильтрации вывода logcat, связанного с системной программой, от остальных. Выходные данные программы logcat передаются по конвейеру в команду find. Каждая строка, которая содержит ‘com.example.name’ выводится в окно. Двойные кавычки являются частью команды find.
чтобы включить вывод из моих команд журнала, я использую имя пакета, здесь «com.example.name» , как часть первого параметра в моем журнале команд, таких как это:
Примечание: мой телефон Samsung Galaxy выдает намного меньше выходных данных, связанных с программой чем эмулятор 17 уровня.
Да, теперь вы получите его автоматически.
Обновление до AVD 14, где logcat будет автоматически session filter
где это фильтр войти в вас конкретное приложение (пакет)
слева в представлении logcat у вас есть окна» сохраненные фильтры». Здесь можно добавить новый фильтр logcat по имени приложения (например, com.ваш.пакет)
Что я обычно делаю-это отдельный фильтр на PID что было бы эквивалентно текущей сессии. Но, конечно, он меняется каждый раз, когда вы запускаете приложение. Не хорошо, но это единственный способ иметь всю информацию о приложении, независимо от тега журнала.
Как правило, я делаю эту команду «adb shell ps» в приглашении (позволяет видеть запущенные процессы), и можно обнаружить pid приложения. С этим pid в руках перейдите в Eclipse и напишите pid:XXXX (XXXX-это приложение pid), затем выход журналов фильтруется этим приложением.
или, проще говоря. в представлении logcat на Eclipse найдите любое слово, связанное с вашим желаемым приложением, откройте pid, а затем выполните фильтр по pid «PID:XXXX».
Я использую для хранения его в файле:
Это, вероятно, самое простое решение.
поверх решения от Tom Mulcahy, вы можете еще больше упростить его, как показано ниже:
использование легко, как обычный псевдоним. Просто введите команду в командной строке:
настройка псевдонима делает его удобным. И регулярное выражение делает его надежным для приложений с несколькими процессами, предполагая, что вы заботитесь только о главном процессе.
из coz вы можете установить больше псевдонимов для каждого процесса, как вам угодно. Или использовать решение Хегази. 🙂
кроме того, если вы хотите установить уровень ведения журнала, это
вы можете достичь этого в Eclipse logcat, введя следующее в поле поиска.
com.образец.приложение-имя пакета приложения.
мой .функция файл, это может быть любой использовать
В Android Studio в окне монитора Android: 1. Выберите приложение, которое вы хотите отфильтровать 2. Выберите «Показывать только выбранное приложение»
используйте первый параметр в качестве имени приложения. Бревно.d («your_Application_Name», «message»);
и в LogCat: создать фильтр — — — > имя фильтра & по тегу журнала: равно ‘your_Application_Name’ он создаст новую вкладку для вашего приложения.
используйте полные имена классов для тегов журнала:
затем используйте grep
приложение Android Device Monitor, доступное в sdk / tools / monitor, имеет опцию logcat для фильтрации «по имени приложения», где вы вводите имя пакета приложения.
на Linux / Un*X / Cygwin вы можете получить список всех тегов в проекте (с добавлением :V после каждого) с этой командой (разделить, потому что читаемость):
он охватывает теги, определенные обоими способами определения тегов:
а затем просто использовать его для adb logcat.
Я нашел приложение в магазине, которое может показать имя / процесс журнала. Так как Android Studio просто ставит (?) в журналах, генерируемых другими процессами, мне было полезно знать, какой процесс генерирует этот журнал. Но все же в этом приложении отсутствует фильтр по имени процесса. Вы можете найти его здесь.
добавить пакет приложения в «имя фильтра», нажав на кнопку «+» в левом верхнем углу в logcat.
для фильтрации журналов в командной строке используйте следующий скрипт
adb logcat com.yourpackage: v
вывод журнала cat может быть отфильтрован только для отображения сообщений из вашего пакета с помощью этих аргументов.
АБР ком.ваш.пакет:I*: s
Edit-я говорил в ближайшее время.
Источник