Je souhaite lire et réagir aux journaux logcat dans mon application.
J'ai trouvé le code suivant:
try {
Process process = Runtime.getRuntime().exec("logcat -d");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
StringBuilder log=new StringBuilder();
String line = "";
while ((line = bufferedReader.readLine()) != null) {
log.append(line);
}
TextView tv = (TextView)findViewById(R.id.textView1);
tv.setText(log.toString());
}
catch (IOException e) {}
Ce code renvoie en effet les logs logcat qui ont été réalisés jusqu'au démarrage de l'application -
Mais est-il possible d'écouter en continu, même les nouveaux journaux logcat?
android
logcat
android-logcat
David
la source
la source
Réponses:
Vous pouvez continuer à lire les journaux, simplement en supprimant l'indicateur "-d" dans votre code ci-dessus.
L'indicateur "-d" demande à logcat d'afficher le contenu du journal et de quitter. Si vous supprimez l'indicateur, logcat ne se terminera pas et continuera d'envoyer toute nouvelle ligne qui lui est ajoutée.
N'oubliez pas que cela peut bloquer votre application si elle n'est pas correctement conçue.
bonne chance.
la source
Vous pouvez effacer votre logcat avec cette méthode que j'utilise pour effacer après avoir écrit logcat dans un fichier pour éviter les lignes dupliquées:
la source
Avec les coroutines et les bibliothèques officielles lifecycle-livingata-ktx et lifecycle-viewmodel-ktx , c'est simple comme ça:
Usage
la source
WebView
au lieu deTextView
.Voici un montage / dépôt rapide qui peut être utilisé pour capturer tous les éléments de journal actuels ou tous les nouveaux (depuis une dernière demande).
Vous devez modifier / étendre cela, car vous souhaiterez peut-être renvoyer un flux continu plutôt qu'un LogCapture.
Le "manuel" Android LogCat: https://developer.android.com/studio/command-line/logcat.html
Dans votre projet qui effectue la journalisation des activités:
Lorsque vous souhaitez capturer tout ce que vous avez connecté via "Logger"
Lorsque vous avez faim et que vous voulez grignoter plus de bûches
Vous pouvez obtenir la capture sous forme de chaîne avec
Ou vous pouvez obtenir les éléments du journal de la capture avec
Il n'y a pas de méthode statique exacte pour capturer les clés de journal étrangères, mais il existe néanmoins un moyen
L'utilisation de ce qui précède vous permettra également de faire appel
Logger.this.nextCapture
à la capture étrangère.la source
git.hsusa.core.log.controller.AndroidLogController.java
; Vous voudrez peut-être utiliser ma bibliothèque hscore au lieu de cette solution "rapide et sale". Pour faire la journalisation avec hscore, vous utiliseriez:public final static SmartLogContext log = SmartLog.getContextFor("MyLogContext");
pour commencer. Cela fonctionne à peu près de la même manière avec une meilleure API. Vous pouvez utiliser mon traqueur de problèmes git hub si vous avez besoin de TOUTE aide pour cela.L'indicateur "-c" efface le tampon.
-c Efface (vide) tout le journal et quitte.
la source
J'utilise ceci dans mon application et cela fonctionne. Et vous pouvez utiliser le code ci-dessus dans Timer Task afin qu'il n'arrête pas votre thread principal
la source