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().