Observei que quando uso o Logcat com o Eclipse com o ADT para Android, também recebo mensagens de muitos outros aplicativos. Existe uma maneira de filtrar isso e mostrar apenas mensagens do meu próprio aplicativo.
android
android-logcat
Vinod
fonte
fonte
Respostas:
Os nomes dos pacotes são garantidos como exclusivos, para que você possa usar a
Log
função com a tag como nome do pacote e, em seguida, filtrar por nome do pacote :NOTA: A partir das Ferramentas de construção 21.0.3, isso não funcionará mais, pois os TAGS estão restritos a 23 caracteres ou menos.
Log.<log level>("<your package name>", "message");
adb -d logcat <your package name>:<log level> *:S
-d
indica um dispositivo real e-e
indica um emulador. Se houver mais de um emulador em execução, você pode usar-s emulator-<emulator number>
(por exemplo,-s emulator-5558
)Exemplo:
adb -d logcat com.example.example:I *:S
Ou, se você estiver usando o
System.out.print
envio de mensagens para o log, poderá usaradb -d logcat System.out:I *:S
apenas para mostrar chamadas para System.out.Você pode encontrar todos os níveis de log e mais informações aqui: https://developer.android.com/studio/command-line/logcat.html
http://developer.android.com/reference/android/util/Log.html
Edição: Parece que eu pulei a arma um pouco e só percebi que você estava perguntando sobre o logcat no Eclipse. O que eu postei acima é para usar o logcat através do adb na linha de comando. Não tenho certeza se os mesmos filtros são transferidos para o Eclipse.
fonte
logcat <your package name>:<log level>
a resposta, é possível usar o nome do pacote como filtro válido. Eu precisava ler a resposta duas vezes para compreender o que realmente está dizendo; portanto, recomendo alterar a primeira linha para algo como "logcat <tag>:<log level>
onde<tag>
pode estar o nome do seu pacote se você também usou como tagandroid.util.Log
"Linux e OS X
Use ps / grep / cut para obter o PID e, em seguida, grep para entradas de logcat com esse PID. Aqui está o comando que eu uso:
(Você pode melhorar ainda mais a regex para evitar o problema teórico de linhas de log não relacionadas que contenham o mesmo número, mas isso nunca foi um problema para mim)
Isso também funciona ao combinar vários processos.
janelas
No Windows, você pode fazer:
fonte
pid=$(adb shell ps | grep "package-name" | cut -c10-15) && adb logcat | grep $pid
adb logcat | grep `adb shell ps | grep org.videolan.vlc | awk '{print $2")"}'`
adb logcat | findstr com.example.package
adb logcat | grep `adb shell ps | grep com.example.package | tr -s [:space:] ' ' | cut -d' ' -f2`
Desde o Android 7.0, o logcat tem a opção --pid filter e o comando pidof está disponível, substitua com.example.app pelo nome do pacote.
(ubuntu terminal / Desde o Android 7.0)
ou
Para obter mais informações sobre o comando pidof:
https://stackoverflow.com/a/15622698/7651532
fonte
grep
efindstr
, mas elas estão apenas filtrando logs com algum valor, excluindo muitas mensagens. Sua resposta é verdadeira: mostre todo o log sobre o aplicativo sem excluir a mensagem de log de outras bibliotecas. É como o filtro atual "Mostrar apenas selecionado" do Android Studio. Obrigado!Adicionar filtro
Especifique nomes
Escolha o seu filtro.
fonte
Para mim isso funciona no mac
Terminal
Chegou à pasta onde você
adb
digitou o comando abaixo no terminalAqui ele filtrará todos os logs de
MyTAG
eAndroidRuntime
fonte
Log.d("MyTAG", "i am hero"); Log.d("AndroidRunTime", "i am zero");
2) para o login DEBUG para Android$ adb -s RKSCWSOV5SAIEUSC shell;
3)$ logcat MyTAG:V AndroidRuntime:E *:S
4) agora ele vai mostrar detalhado de MyTag e erros de AndroidRuntimeAtualização 17 de maio
Faz alguns anos e as coisas mudaram. E o Eclipse não é mais suportado oficialmente. Então, aqui estão mais duas abordagens atualizadas:
1. Android Studio
Na
Android monitor
caixa de ferramentas, você pode filtrar por logcat pordebuggable process
. Normalmente, quando você desenvolve um aplicativo, é um processo depurável. De vez em quando, tenho problemas com isso e faço o seguinte:Tools
->Android
->Enable ADB Integration
.Se já estiver ativado, desative-o e ligue-o novamente.
Desconecte e reconecte seu dispositivo móvel.
Também existem opções para filtrar via regex e o nível de depuração
2. logcat-color
Este é um bom empacotador python,
adb logcat
se você quiser usar uma solução baseada em terminal. O bom disso é que você pode salvar várias configurações e simplesmente reutilizá-las. A filtragem portags
é bastante confiável. Você também pode filtrarpackage
para ver os logs de um ou mais aplicativos apenas, mas começalogcat-color
antes de iniciar o aplicativo.Resposta antiga:
Parece que não posso comentar as respostas anteriores, por isso postarei uma nova. Este é um comentário à resposta de Tom Mulcahy , que mostra como o comando deve mudar para funcionar na maioria dos dispositivos, pois a
adb shell ps
coluna PID é variável.NOTA: O comando abaixo funciona para os casos em que você conectou muitos dispositivos. Então
device id
é necessário. Caso contrário, você pode simplesmente omitir os colchetes '[', ']'1. Para descobrir a coluna pid, digite:
Agora memorize o número da coluna para o PID. A numeração começa em
1
.2. Em seguida, digite o seguinte:
Basta colocar a coluna que você memorizou
PUT_COLUMN_HERE
, por exemplo$5
Embargo
Cada vez que você executa novamente o aplicativo, é necessário executar novamente o segundo comando, porque o aplicativo recebe um novo PID do sistema operacional.
fonte
Isso tem funcionado para mim no git bash:
fonte
coloque isso em applog.sh
então:
applog.sh com.example.my.package
fonte
log.d("TAG", "multine\nlog")
por exemplo):adb -d logcat -v long | sed -Ene '/^\[.*'" (${APPID}):"'.*\]/ { N; s/\n/ /; p; :a;' -e 'n; p; s/^.+$/foo/; t a;' -e ' }' | grep -v '^$'
- Deixei de foratr
,APPID
suponho que seja necessário nos sistemas Windows e envolvi os parênteses para permitir vários pids (separados por|
) .Isso funciona para mim com a depuração USB:
Conecte o dispositivo e use:
adb shell
Use o logcat quando conectado:
logcat | grep com.yourapp.packagename
fonte
Se você estiver usando o Android Studio, poderá selecionar o processo do qual deseja receber os logcats. Aqui está a captura de tela.
fonte
Log cat has a new option (on by default) which creates an application filter automatically such that only the launched application's output is shown
Escrevi um script de shell para filtrar o logcat pelo nome do pacote, que acho mais confiável do que usar
Ele usa / proc / $ pid / cmdline para descobrir o pid real e depois faz um grep no logcat
https://gist.github.com/kevinxucs/7340e1b1dd2239a2b04a
fonte
Ubuntu: adb logcat -b all -v color --pid = `adb shell pidof -s com.packagename` Com cor e registro contínuo do aplicativo
fonte
adb shell pidof ...
pouco não fez um trabalho para mim assim que euadb shell
ed no dispositivo e correutop
copiou o PID para o meu aplicativo lá e, em seguida, substituiu-o em seu comandopgrep
em vez de pidofO ADT v15 para Eclipse permite especificar um nome de aplicativo (que é realmente o valor do pacote no seu androidmanifest.xml).
Adoro poder filtrar por aplicativo, mas o novo logcat tem um erro com a rolagem automática. Quando você rola um pouco para cima para ver os logs anteriores, ele rola automaticamente de volta para a parte inferior em alguns segundos. Parece que rolar 1/2 caminho acima do log impede que ele volte para o fundo, mas isso geralmente é inútil.
EDIT: Tentei especificar um filtro de aplicativo na linha de comando - mas sem sorte. Se alguém descobrir isso OU como interromper a rolagem automática, entre em contato.
fonte
Usando o Windows prompt de comando:
adb logcat -d | findstr <package>
.* Isso foi mencionado pela primeira vez por jj_ , mas levei anos para encontrá-lo nos comentários ...
fonte
Como uma variante, você pode usar o script PID Cat de Jake Wharton de terceiros . Este script tem duas vantagens principais:
Da documentação:
Uma saída parece
fonte
Não sei se há uma maneira de ver apenas as mensagens do sistema em relação ao seu aplicativo, mas você pode filtrar com base em uma string. Se você estiver fazendo um log no programa, poderá incluir apenas uma determinada palavra-chave exclusiva e filtrar com base nessa palavra.
fonte
Tente: Janela -> Preferências -> Android -> LogCat. Altere o campo "Mostrar exibição do logcat se ..." o valor "VERBOSE". Isso me ajudou.
fonte
Se você estiver usando o Eclipse , pressione o sinal verde + na janela logCat abaixo e coloque o nome do seu pacote (com.example.yourappname) na caixa por Nome do Aplicativo . Além disso, escolha qualquer nome confortável para você na caixa Nome do filtro e clique em ok. Você verá apenas mensagens relacionadas ao seu aplicativo quando o filtro que você acabou de adicionar for escolhido no painel esquerdo do logCat.
fonte
Dê um nome ao seu log. Eu chamei o meu de "wawa".
No Android Studio, vá para Android-> Editar configurações de filtro
Em seguida, digite o nome que você deu aos logs. No meu caso, é chamado "wawa". Aqui estão alguns exemplos dos tipos de filtros que você pode fazer. Você pode filtrar por System.out, System.err, Logs ou nomes de pacotes:
fonte
Esta é provavelmente a solução mais simples.
Além de uma solução de Tom Mulcahy, você pode simplificá-la ainda mais, como abaixo:
O uso é fácil como alias normal. Basta digitar o comando no seu shell:
A configuração do alias torna isso útil. E o regex o torna robusto para aplicativos com vários processos, assumindo que você se preocupa apenas com o processo principal.
No coz, você pode definir mais aliases para cada processo como desejar. Ou use a solução de hegazy. :)
Além disso, se você deseja definir níveis de log, é
fonte
No Windows 10, usando o Ionic, o que funcionou muito bem foi combinar 'findstr' com o "INFO: CONSOLE" gerado por todas as mensagens do aplicativo. Então, meu comando na linha de comando é:
fonte
Tentei usar a resposta de Tom Mulcahy, mas infelizmente não estava funcionando para aplicativos com vários processos, então editei para atender às minhas necessidades.
fonte
Use
-s
!Fonte
fonte
Além da resposta de Tom Mulcahy , se você deseja filtrar por PID no console do Windows, é possível criar um pequeno arquivo em lotes como este:
fonte
Obviamente, essa é uma pergunta voltada para o uso do Logcat de fora do dispositivo do desenvolvedor. No entanto, se você deseja exibir a saída do Logcat no dispositivo (programaticamente), basta isso:
O
*:D
final filtra todas as mensagens abaixo do nível do log de depuração, mas você pode deixar isso de fora.Para direcionar a saída para, digamos, um TextView, veja por exemplo aqui .
fonte
Agora é possível digitar tag: nameofthetag ou app: nameoftheapp para filtrar sem adicionar novos filtros à barra de filtros salvos
fonte
No intelliJ (e provavelmente também no eclipse), você pode filtrar a saída do logcat pelo texto webview , para que ele imprima basicamente tudo o que o phonegap está produzindo
fonte
Mais uma variante do Gavriel's
applog.sh
com suporte a vários dispositivos e aplicativos com vários processos:Uso:
applog.sh com.example.my.package [-s <specific device>]
fonte
No linux, isso funcionou para mim:
fonte