Logcat permite el filtrado de registros, pero funciona así: usted define filtros y logcat solo muestra mensajes que coinciden con los filtros. Pero, ¿hay alguna manera de mostrar todos los registros, EXCEPTO algunas etiquetas definidas por filtros?
122
Respuestas:
Si lo está utilizando
adb logcat
, puede canalizarlo a través de grep y utilizar su coincidencia invertida: Desde la página de manual de grep :Por ejemplo:
Puede extender esto usando expresiones regulares .
Aquí hay un ejemplo de tal expresión:
Este verificaría si se produce cualquiera de los dados, grep no los enumeraría.
fuente
grep
es un comando estándar de Unix. Para Windows puedes probarfind /V "notshownmatchpattern"
. PD Aparentemente, el shell adb también tiene ungrep
. ¡Pero no es lo mismo que el Unix estándargrep
!Puede hacer esto desde DDMS Monitor (y también Eclipse o Android Studio) con el cuadro de entrada de expresión regular y aserciones negativas anticipadas , por ejemplo, estoy excluyendo mucho ruido de mi registro con lo siguiente:
(La "etiqueta:" no es parte de la expresión regular, pero le dice a LogCat que solo aplique la expresión regular al campo Etiqueta. Si usa este truco en un filtro guardado, coloque solo la expresión regular en el cuadro de entrada "Etiqueta" , y omita el prefijo "tag:")
En el panel del monitor logcat de Android Studio, puede configurar un filtro guardado para esto abriendo el menú desplegable en la esquina superior derecha (puede tener "Mostrar solo la aplicación seleccionada" seleccionada) y seleccionando Editar configuración de filtro. Cree un nuevo filtro logcat y coloque
^(?!(WifiMulticast
... etc.))
en el cuadro Etiqueta de registro, con laRegex
casilla marcada.fuente
Si desea excluir o filtrar ciertos mensajes por nombre de etiqueta en Android Studio, vaya a la ventana LogCat => Editar configuración de filtro e ingrese lo siguiente en "por etiqueta de registro (regex):"
Tenga en cuenta que no hay espacios, esto es importante
fuente
^(?!tag1)
^(?!.*(WindowManager|dalvik|Environment|DataRouter|AlarmManager)).*$
Esto excluirá textos que tengan contenido WindowManager, dalvik, ...
tag:^(?!.*(WindowManager|dalvik|Environment|DataRouter|AlarmManager)).*$
Esto excluirá las etiquetas WindowManager, dalvik, ... de logcat
fuente
^(?!(WifiMulticast|WifiHW|MtpService|PushClient|EGL_emulation|OpenGl*|InputReader|art|dalvik|Environment|DataRouter|AlarmManager|WindowManager|PhoneStatusBar|ActivityManager|ResourceType|PackageManager|gralloc*))
Desde el shell, puede usar un comando como:
que incluirá todos los registros aparte de aquellos con las etiquetas
AlarmManagerService
yPowerManagerService
.(
:S
Significa "silencioso", lo que significa que no se imprimirá nada para esas etiquetas;:V
significa "detallado" que significa que todo se imprimirá para todas las demás etiquetas. La documentación de Android para logcat tiene más detalles de otras opciones que puede usar en los filtros)También puede usar la
ANDROID_LOG_TAGS
variable de entorno para configurar filtros predeterminados, por ejemplo (en bash):fuente
S
es para 'silencio'. Sin embargo, he actualizado la respuesta para explicar esto, como sugieres.Combine la búsqueda anticipada positiva y negativa para un filtrado más potente.
Ejemplo:
Se incluyen las etiquetas en los primeros paréntesis anidados.
Las etiquetas en segundo lugar están excluidas.
fuente
Aquí hay una lista de filtros que he estado usando para ignorar los registros del sistema Samsung . funcionaría también con otros dispositivos.
fuente
Una manera fácil de hacer esto es simplemente filtrando solo las etiquetas que desea ver.
Solo se mostrarán esas etiquetas.
fuente
Dentro de la vista Eclipse Logcat no existe tal opción. Sin embargo, puede utilizar el nivel de registro para excluir cualquier mensaje cuyo nivel de registro sea demasiado bajo. P.ej. establecerlo en I (nfo) no muestra mensajes erbose D (ebug) y (V).
fuente