---
name: android_logcat
kind: function
lang: bash
domain: infra
version: "1.0.0"
purity: impure
signature: "android_logcat([--serial <S>] [--package <name>] [--level <V|D|I|W|E|F>] [--lines <N>] [--clear])"
description: "Lee logcat del device/emulador, opcionalmente filtrado por package y nivel. Multi-emulator via --serial."
tags: [android, adb, logcat, wsl]
uses_functions: ["adb_wsl_bash_infra"]
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: []
params:
  - name: "--serial <S>"
    desc: "Optional target device/emulator serial. Default: first device detected."
  - name: "--package <name>"
    desc: "Filter by app package (resolves PID via adb shell pidof)"
  - name: "--level <L>"
    desc: "Min log level V/D/I/W/E/F, default I"
  - name: "--lines <N>"
    desc: "Dump last N lines and exit. Default: follow indefinidamente"
  - name: "--clear"
    desc: "Clear log buffer before reading"
output: "Logcat output a stdout. Follow indefinido sin --lines. Exit 130 si Ctrl-C. Exit 2 si --package y el proceso no corre."
tested: false
tests: []
test_file_path: ""
file_path: "bash/functions/infra/android_logcat.sh"
---

## Ejemplo

```bash
# Follow completo sin filtros
android_logcat

# Solo logs de una app, nivel Warning y superior
android_logcat --package com.example.myapp --level W

# Dump de las últimas 200 líneas y salir
android_logcat --lines 200

# Limpiar buffer y hacer follow solo de errores de la app
android_logcat --clear --package com.example.myapp --level E
```

## Notas

- Resuelve `adb` o `adb.exe` en PATH (compatible con WSL2 usando el binario Windows).
- `--package` usa `adb shell pidof -s` para obtener el PID actual. Si la app no está corriendo, sale con exit 2.
- `--lines N` activa modo dump (`-d -t N`); sin él, el follow es indefinido hasta Ctrl-C (exit 130).
- `--clear` ejecuta `adb logcat -c` antes de leer, descartando el buffer acumulado.
- El filtro de nivel se aplica como `*:<level>` al final del comando logcat.
- En follow mode, `trap INT TERM` garantiza exit limpio (exit 130) al interrumpir.
- CR (`\r`) del output de `adb.exe` en WSL se limpia al resolver el PID.
