Log.d() или Log.e() в android печатает нежелательные дополнительные тексты

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

Log.d(TAG, "From: " + "34369257099");
Log.d(TAG, "Message Notification Body: " + "Hello");

Выход на мониторе Android:

10-01 14:15:33.262 18193-23771/com.xxxxx.xxxxxx D/MyFirebaseMsgService: From: 34369257099
10-01 14:15:33.262 18193-23771/com.xxxxx.xxxxxx D/MyFirebaseMsgService: Message Notification Body: Hello

[ 10-01 14:15:33.490 19060:19060 E/         ]
[adb] handle_packet() t->online(1) p->msg.arg0(9871) p->msg.arg1(0) OPEN


[ 10-01 14:15:33.490 19060:19060 E/         ]
[adb] handle the adb command, and the command = adb shell:cat /proc/net/xt_qtaguid/stats | grep 10206

[ 10-01 14:15:33.527 19060:19060 E/         ]
[adb] cuurent command is A_CLSE 


[ 10-01 14:15:33.686 19060:19060 E/         ]
[adb] handle_packet() t->online(1) p->msg.arg0(9872) p->msg.arg1(0) OPEN


[ 10-01 14:15:33.686 19060:19060 E/         ]
[adb] handle the adb command, and the command = adb shell:cat /proc/18193/stat

[ 10-01 14:15:33.701 19060:19060 E/         ]
[adb] cuurent command is A_CLSE 


[ 10-01 14:15:33.723 19060:19060 E/         ]
[adb] handle_packet() t->online(1) p->msg.arg0(9873) p->msg.arg1(0) OPEN


[ 10-01 14:15:33.723 19060:19060 E/         ]
[adb] handle the adb command, and the command = adb shell:cat /proc/stat

[ 10-01 14:15:33.740 19060:19060 E/         ]
[adb] cuurent command is A_CLSE 


[ 10-01 14:15:34.051 19060:19060 E/         ]
[adb] handle_packet() t->online(1) p->msg.arg0(9874) p->msg.arg1(0) OPEN


[ 10-01 14:15:34.051 19060:19060 E/         ]
[adb] handle the adb command, and the command = adb shell:cat /proc/net/xt_qtaguid/stats | grep 10206

[ 10-01 14:15:34.086 19060:19060 E/         ]
[adb] cuurent command is A_CLSE 


[ 10-01 14:15:34.258 19060:19060 E/         ]
[adb] handle_packet() t->online(1) p->msg.arg0(9875) p->msg.arg1(0) OPEN


[ 10-01 14:15:34.258 19060:19060 E/         ]
[adb] handle the adb command, and the command = adb shell:cat /proc/18193/stat

[ 10-01 14:15:34.274 19060:19060 E/         ]
[adb] cuurent command is A_CLSE 


[ 10-01 14:15:34.294 19060:19060 E/         ]
[adb] handle_packet() t->online(1) p->msg.arg0(9876) p->msg.arg1(0) OPEN


[ 10-01 14:15:34.294 19060:19060 E/         ]
[adb] handle the adb command, and the command = adb shell:cat /proc/stat

[ 10-01 14:15:34.315 19060:19060 E/         ]
[adb] cuurent command is A_CLSE 


[ 10-01 14:15:34.613 19060:19060 E/         ]
[adb] handle_packet() t->online(1) p->msg.arg0(9877) p->msg.arg1(0) OPEN


[ 10-01 14:15:34.613 19060:19060 E/         ]
[adb] handle the adb command, and the command = adb shell:cat /proc/net/xt_qtaguid/stats | grep 10206

[ 10-01 14:15:34.648 19060:19060 E/         ]
[adb] cuurent command is A_CLSE 


[ 10-01 14:15:34.831 19060:19060 E/         ]
[adb] handle_packet() t->online(1) p->msg.arg0(9878) p->msg.arg1(0) OPEN


[ 10-01 14:15:34.831 19060:19060 E/         ]
[adb] handle the adb command, and the command = adb shell:cat /proc/18193/stat

[ 10-01 14:15:34.849 19060:19060 E/         ]
[adb] cuurent command is A_CLSE 


[ 10-01 14:15:34.867 19060:19060 E/         ]
[adb] handle_packet() t->online(1) p->msg.arg0(9879) p->msg.arg1(0) OPEN


[ 10-01 14:15:34.867 19060:19060 E/         ]
[adb] handle the adb command, and the command = adb shell:cat /proc/stat

[ 10-01 14:15:34.885 19060:19060 E/         ]
[adb] cuurent command is A_CLSE 


[ 10-01 14:15:35.176 19060:19060 E/         ]
[adb] handle_packet() t->online(1) p->msg.arg0(9880) p->msg.arg1(0) OPEN


[ 10-01 14:15:35.176 19060:19060 E/         ]
[adb] handle the adb command, and the command = adb shell:cat /proc/net/xt_qtaguid/stats | grep 10206

[ 10-01 14:15:35.210 19060:19060 E/         ]
[adb] cuurent command is A_CLSE 


[ 10-01 14:15:35.404 19060:19060 E/         ]
[adb] handle_packet() t->online(1) p->msg.arg0(9881) p->msg.arg1(0) OPEN


[ 10-01 14:15:35.404 19060:19060 E/         ]
[adb] handle the adb command, and the command = adb shell:cat /proc/18193/stat

[ 10-01 14:15:35.421 19060:19060 E/         ]
[adb] cuurent command is A_CLSE 


[ 10-01 14:15:35.439 19060:19060 E/         ]
[adb] handle_packet() t->online(1) p->msg.arg0(9882) p->msg.arg1(0) OPEN


[ 10-01 14:15:35.439 19060:19060 E/         ]
[adb] handle the adb command, and the command = adb shell:cat /proc/stat

[ 10-01 14:15:35.457 19060:19060 E/         ]
[adb] cuurent command is A_CLSE 


[ 10-01 14:15:35.738 19060:19060 E/         ]
[adb] handle_packet() t->online(1) p->msg.arg0(9883) p->msg.arg1(0) OPEN


[ 10-01 14:15:35.738 19060:19060 E/         ]
[adb] handle the adb command, and the command = adb shell:cat /proc/net/xt_qtaguid/stats | grep 10206

[ 10-01 14:15:35.764 19060:19060 E/         ]
[adb] cuurent command is A_CLSE 


[ 10-01 14:15:35.974 19060:19060 E/         ]
[adb] handle_packet() t->online(1) p->msg.arg0(9884) p->msg.arg1(0) OPEN


[ 10-01 14:15:35.974 19060:19060 E/         ]
[adb] handle the adb command, and the command = adb shell:cat /proc/18193/stat

[ 10-01 14:15:35.990 19060:19060 E/         ]
[adb] cuurent command is A_CLSE 


[ 10-01 14:15:36.009 19060:19060 E/         ]
[adb] handle_packet() t->online(1) p->msg.arg0(9885) p->msg.arg1(0) OPEN


[ 10-01 14:15:36.009 19060:19060 E/         ]
[adb] handle the adb command, and the command = adb shell:cat /proc/stat

Можете ли вы помочь мне решить эту проблему? Я имею в виду, почему этот дополнительный текст печатается? и как я могу избавиться от этого? Я использовал фильтр для отображения только журналов, связанных с пакетом, и попробовал также фильтровать TAG. Но см. Прикрепленное изображение, которое в некоторых журналах печатается по-прежнему мусорным текстом.

Спасибо в Advance

Ответ 1

Поскольку у нежелательных строк, похоже, есть "[" в них, мы должны иметь возможность создавать фильтр, который исключает эти строки и получает то, что вам нужно (вы не сможете использовать этот символ в любом из ваших журналов заявления).

Создайте фильтр, используя ^[^\[]+$ в качестве сообщения журнала (и убедитесь, что выбрано Regex). Вам также нужно будет установить либо тег журнала, либо имя пакета, либо вы получите все, начиная от других приложений, которые не включают в себя '['.

Благодаря здесь для помощи с регулярным выражением.

снимок экрана редактора журнала logcat

Ответ 2

Правильно посмотрите изображение в верхнем правом углу. У нас есть что-то вроде базового фильтра. Использование Show Only Selected Application позволит вам видеть только то, что принадлежит вашему приложению. вы можете использовать Edit Filter Configuration для использования более сложных фильтров.

Ответ 3

Вы используете ndk librairies?

Эти журналы выглядят как собственный код.

https://android.googlesource.com/platform/system/core/+/android-4.4_r1/adb/adb.c имеют некоторые команды, которые выводят строки, как у вас:

D("handle_packet() %c%c%c%c\n", ((char*) (&(p->msg.command)))[0],
            ((char*) (&(p->msg.command)))[1],
            ((char*) (&(p->msg.command)))[2],
            ((char*) (&(p->msg.command)))[3]);

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

Ответ 4

Есть два способа сделать это

  • Сначала загрузите терминал cygwin и запустите команду adb logcat | grep appname здесь имя приложения - это ваше имя приложения, которое используется в имени пакета. Обратите внимание, что эта команда запускается только в cygwin.
  • Выход журнала фильтрации Тег сообщения журнала - это короткая строка, указывающая системный компонент, из которого возникает сообщение (например, "Вид" для системы просмотра). Приоритет - это одно из следующих значений символов, упорядоченное с самого низкого приоритета: V: Подробный (самый низкий приоритет) D: Отладка I: Информация W: Предупреждение E: Ошибка F: Смертельный S: Тихий (самый высокий приоритет, на котором ничего не печатается) Вы можете получить список тегов, используемых в системе, с приоритетами, запустив logcat и наблюдая первые два столбца каждого сообщения, заданные как /.

Ниже приведен пример краткого вывода logcat, полученного с помощью команды вывода logcat -v short. Он показывает, что сообщение относится к уровню приоритета "I" и тегу "ActivityManager" :

I/ActivityManager(  585): Starting activity: Intent { action=android.intent.action...}

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

Выражение фильтра следует за этим тегом формата: priority..., где тег указывает тег, представляющий интерес, и приоритет указывает минимальный уровень приоритета для отчета для этого тега. Сообщения для этого тега выше или выше указанного приоритета записываются в журнал. Вы можете указать любое количество тегов: приоритетные спецификации в одном выражении фильтра. Ряд спецификаций разделен пробелами.

Вот пример выражения фильтра, который подавляет все сообщения журнала, кроме тех, которые имеют тег "ActivityManager" , с приоритетом "Информация" или выше, и все сообщения журнала с тегом "MyApp" с приоритетом "Отладка" или выше:

adb logcat ActivityManager:I MyApp:D *:S

Последний элемент в вышеприведенном выражении *: S устанавливает уровень приоритета для всех тегов в "silent", тем самым обеспечивая отображение только сообщений журнала с "ActivityManager" и "MyApp". Использование *: S - отличный способ гарантировать, что выход журнала ограничен фильтрами, которые вы явно указали, - это позволяет вашим фильтрам служить "белым списком" для выхода журнала.

Следующее выражение фильтра отображает все сообщения журнала с уровнем предупреждения "предупреждение" и выше для всех тегов:

 adb logcat *:W

Если вы запускаете logcat с вашего компьютера разработки (по сравнению с его запуском на удаленной оболочке adb), вы также можете установить выражение фильтра по умолчанию, экспортировав значение для переменной среды ANDROID_LOG_TAGS:

export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"

Обратите внимание, что фильтр ANDROID_LOG_TAGS не экспортируется в экземпляр эмулятора/устройства, если вы используете logcat из удаленной оболочки или используете logcat оболочки adb.

Ответ 5

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

Ответ 6

Просто предположение: вы используете альтернативный класс журнала, который добавляет больше выходных данных. Чтобы проверить это, измените вызовы Log.d() на вызовы android.util.Log.d().