Je voudrais transférer le fichier journal d'un appareil vers mon PC. Comment puis-je le faire ?
Cette ligne de commande ne fonctionne pas pour moi, j'obtiens cette sortie. logcat read : Argument non valide
Je voudrais transférer le fichier journal d'un appareil vers mon PC. Comment puis-je le faire ?
Logcollector est une bonne option mais vous devez d'abord l'installer.
Lorsque je veux obtenir le fichier journal pour l'envoyer par courrier, je fais généralement ce qui suit :
adb shell logcat > log.txt
Cette ligne de commande ne fonctionne pas pour moi, j'obtiens cette sortie. logcat read : Argument non valide
Notez que logcollector ne fonctionne pas pour les versions d'Android supérieures à 4.1 car les applications ne sont désormais autorisées à lire que leurs propres entrées de journal. ( groups.google.com/forum/#!topic/Android-log-collector/ )
N'y a-t-il pas simple un moyen de simplement extraire le fichier journal du périphérique une fois qu'il est connecté via USB comme périphérique de stockage externe, sans avoir besoin d'installer adb ou quelque chose comme ça ?
J'espère que ce code pourra aider quelqu'un. Il m'a fallu 2 jours pour comprendre comment se connecter à partir de l'appareil, et ensuite le filtrer :
public File extractLogToFileAndWeb(){
//set a file
Date datum = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.ITALY);
String fullName = df.format(datum)+"appLog.log";
File file = new File (Environment.getExternalStorageDirectory(), fullName);
//clears a file
if(file.exists()){
file.delete();
}
//write log to file
int pid = android.os.Process.myPid();
try {
String command = String.format("logcat -d -v threadtime *:*");
Process process = Runtime.getRuntime().exec(command);
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
StringBuilder result = new StringBuilder();
String currentLine = null;
while ((currentLine = reader.readLine()) != null) {
if (currentLine != null && currentLine.contains(String.valueOf(pid))) {
result.append(currentLine);
result.append("\n");
}
}
FileWriter out = new FileWriter(file);
out.write(result.toString());
out.close();
//Runtime.getRuntime().exec("logcat -d -v time -f "+file.getAbsolutePath());
} catch (IOException e) {
Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show();
}
//clear the log
try {
Runtime.getRuntime().exec("logcat -c");
} catch (IOException e) {
Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show();
}
return file;
}
comme indiqué par @mehdok
ajouter la permission au manifeste pour la lecture des logs
<uses-permission android:name="android.permission.READ_LOGS" />
J'utiliserais quelque chose de ce genre :
$adb logcat -d > logcat.txt
L'option -d permet de vider la totalité du tampon circulaire dans le fichier texte. Si vous recherchez une action/intentation particulière, essayez
$adb logcat -d | grep 'com.whatever.you.are.looking.for' -B 100 -A 100 > shorterlog.txt
J'espère que cela vous aidera :)
EDIT :
Le journal interne est un tampon circulaire en mémoire. Il existe en fait plusieurs tampons circulaires de ce type pour chacun des éléments suivants : radio, events, main. La valeur par défaut est main.
Pour obtenir une copie d'un tampon, une technique consiste à exécuter une commande sur le périphérique et à obtenir la sortie sous forme de variable de type chaîne.
SendLog est une application open source qui fait exactement cela : http://www.l6n.org/Android/sendlog.shtml
La clé est d'exécuter logcat
sur l'appareil dans le système d'exploitation embarqué. Ce n'est pas aussi difficile que ça en a l'air, il suffit de regarder l'application open source dans le lien.
Vous pouvez envoyer des journaux avec unLogCat. Ou simplement copier-coller depuis le DDMS :P
@molnarm Je concède que ma réponse était légèrement sur-engagée si c'est tout ce qu'il doit faire =)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.