Подтвердить что ты не робот

Отключить собственные выходные данные logcat на Android

Я использую устройство Samsung Galaxy S3 для разработки, и мое приложение использует камеру. В logcat есть выход, сделанный собственной системой с тегом Camera-JNI, который записывается для logcat, как 20 раз в секунду, заставляя logcat очищать самые старые записи очень быстро.

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

Спасибо.

EDIT

В документации указано:

Вы можете изменить уровень по умолчанию, установив системное свойство: setprop log.tag.<YOUR_LOG_TAG> <LEVEL>. Вы также можете создать файл local.prop, который содержит в нем следующее: log.tag.<YOUR_LOG_TAG>=<LEVEL> и поместите это в /data/local.prop.

РЕДАКТИРОВАТЬ 2

Я уже сделал это (укореняя устройство, нажав файл local.prop на /data и перезагрузив), но тег все еще появляется

4b9b3361

Ответ 1

Я вижу следующее, изучая исходный код Android (2.3.x):

Выполнение

shell setprop log.tag.XYZ

здесь не будет работать (frameworks/base/core/jni/android_hardware_Camera.cpp), поскольку ведение журнала выполняется с использованием макроса LOGV(). Этот метод ведения журнала не использует свойства для определения того, хочет ли какой-либо компонент отключить ведение журнала. Это насколько я могу отслеживать вызовы через код Android.

Таким образом, использование setprop(...) не будет работать для отключения ведения журнала из системного компонента Android, но оно должно работать, когда журналы поступают из пользовательских приложений и т.д., написанных на Java, которые используют base/core/java/android/util/Log.java и frameworks/base/core/jni/android_util_Log.cpp для регистрации. Я предполагаю, что android_util_Log_isLoggable() - это то, что используется для фильтрации.

IMHO Я не вижу другой альтернативы, кроме создания источника для вашего устройства и отключения макросов LOGV в используемом вами коде камеры.

Ответ 2

Вы можете попробовать что-то вроде adb shell setprop log.tag.Camera-JNI ERROR. Если он не работает, просто отфильтруйте журнал или выгрузите его в файл и используйте grep, чтобы найти интересующие вас линии или отфильтровать камеру с помощью grep -v Camera-JNI.

Ответ 3

Если вы хотите, чтобы определенные теги использовали:

logcat -s YourTag:* SecondTag:* ThirdTag:* ...

Вы также можете использовать adb logcat

Просто укажите <TAG>:* столько раз, сколько вы хотите отфильтровать теги, которые вам нужны.

Пример: adb logcat -s AndroidRuntime:* MyApp:* фильтры AndroidRuntime и MyApp теги. Таким образом, вы видите все неперехваченные исключения (сбои), а также все журналы вашего приложения.