Me gustaría extraer el archivo de registro de un dispositivo a mi PC. ¿Cómo puedo hacer eso?¿Cómo obtengo el archivo de registro de un dispositivo Android?
Respuesta
Logcollector es una buena opción, pero es necesario instalar primero.
Cuando quiero obtener el archivo de registro para enviar por correo, que suele hacer lo siguiente:
- conectar el dispositivo a la PC.
- Check that I already setup my os for that particular device.
- Abrir un terminal
- Run
adb shell logcat > log.txt
EDIT:
El registro interno es un buffer circular en la memoria. En realidad, hay algunos pocos buffers circulares para cada uno de: radio, eventos, main. El predeterminado es main.
Para obtener una copia de un búfer, una técnica implica ejecutar un comando en el dispositivo y obtener el resultado como una variable de cadena.
SendLog es una aplicación de código abierto, que hace precisamente esto: http://www.l6n.org/android/sendlog.shtml
La clave es ejecutar logcat
en el dispositivo en el sistema operativo integrado. No es tan difícil como parece, solo echa un vistazo a la aplicación de código abierto en el enlace.
Este vertederos la salida a la pantalla, lo necesito en un archivo. – Pentium10
Puede enviar registros con aLogCat. O simplemente copiar y pegar desde DDMS: P –
@molnarm concedo mi respuesta fue un poco más de la ingeniería, si eso es todo lo que tiene que hacer =) –
Una manera simple es crear sus propios métodos de recolección de registros o incluso solo una aplicación de recopilación de registros existente del mercado.
Para mis aplicaciones hice una funcionalidad de informe que envía los registros a mi correo electrónico (o incluso a otro lugar: una vez que obtiene el registro, puede hacer si lo desea).
Aquí es un ejemplo sencillo de cómo conseguir el archivo de registro de un dispositivo:
A menudo me sale el error "logcat read: Invalid argument
". Tuve que borrar el registro, antes de leer desde el registro.
me gusta esto:
prompt> cd ~/Desktop
prompt> adb logcat -c
prompt> adb logcat | tee log.txt
¡Gracias! ¡Tuve ese error por mucho tiempo, ese logcat -c lo solucionó de inmediato! – Jords
me gustaría utilizar algo de este tipo:
$adb logcat -d > logcat.txt
La opción -d vertederos de todo el buffer circular en el archivo de texto y si están buscando una determinada acción/intención de tratar
$adb logcat -d | grep 'com.whatever.you.are.looking.for' -B 100 -A 100 > shorterlog.txt
Espero que esto ayude :)
Espero que este código ayude a alguien.Me tomó 2 días para averiguar cómo iniciar una sesión desde el dispositivo y, a continuación, filtrarla:
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;
}
como se ha señalado por @mehdok
añadir el permiso para el manifiesto de registros de lectura
<uses-permission android:name="android.permission.READ_LOGS" />
esto funciona bien, pero a las obras en cada dispositivo que necesita '
no funciona para mí – NinjaCoder
¡Gracias al usuario1354692 pude hacerlo más fácil, con solo una línea! el que él ha comentado:
try {
File file = new File(Environment.getExternalStorageDirectory(), String.valueOf(System.currentTimeMillis()));
Runtime.getRuntime().exec("logcat -d -v time -f " + file.getAbsolutePath());}catch (IOException e){}
donde es el mejor lugar para poner este código? en 'OnCreate'? – Youngjae
cuando desee los registros: P –
Primero hacen comando adb seguro es ejecutable mediante el establecimiento de PATH para Android SDK Platform-herramientas:
export PATH=/Users/espireinfolabs/Desktop/soft/android-sdk-mac_x86/platform-tools:$PATH
continuación, ejecute:
adb shell logcat > log.txt
O primer movimiento a ADB plataforma de herramientas:
cd /Users/user/Android/Tools/android-sdk-macosx/platform-tools
continuación, ejecute
./adb shell logcat > log.txt
he creado una pequeña biblioteca (.aar) para recuperar los registros por correo electrónico. Puedes usarlo con cuentas de Gmail. Es bastante simple pero funciona. Puede obtener una copia from here
El sitio está en español, pero hay un PDF con una versión en inglés de la descripción del producto.
Espero que pueda ayudar.
Grande, que es muy útil, gracias! – SalvoC
simple Simplemente ejecute el siguiente comando para obtener la salida de su terminal:
adb shell logcat
Para aquellos que no están interesados en la depuración USB o utilizando adb
existe una solución más fácil. En Android 6 (No está seguro sobre la versión previa) hay una opción en herramientas de desarrollo: Tomar Informe Bug
Al hacer clic en esta opción, se preparará un informe de error y le pedirá que lo guarde para conducir o que le sea enviada por correo electrónico.
Encontré esta es la forma más fácil de obtener registros. No me gusta activar la depuración de USB.
dos pasos:
- generar el registro
- carga Gmail para enviar el registro de
.
Generar el registro
File generateLog() { File logFolder = new File(Environment.getExternalStorageDirectory(), "MyFolder"); if (!logFolder.exists()) { logFolder.mkdir(); } String filename = "myapp_log_" + new Date().getTime() + ".log"; File logFile = new File(logFolder, filename); try { String[] cmd = new String[] { "logcat", "-f", logFile.getAbsolutePath(), "-v", "time", "ActivityManager:W", "myapp:D" }; Runtime.getRuntime().exec(cmd); Toaster.shortDebug("Log generated to: " + filename); return logFile; } catch (IOException ioEx) { ioEx.printStackTrace(); } return null; }
carga Gmail para enviar el registro de
File logFile = generateLog(); Intent intent = new Intent(Intent.ACTION_SEND); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(logFile)); intent.setType("multipart/"); startActivity(intent);
Referencias para # 1
~~
Para # 2 - Hay muchas respuestas diferentes que hay para saber cómo cargar el archivo de registro para ver y enviar. Por último, la solución aquí funcionaba a la vez:
- carga de Gmail como una opción
- adjunta el archivo con éxito
Muchas gracias a https://stackoverflow.com/a/22367055/2162226 para la respuesta de funcionar correctamente
- 1. ¿Cómo obtengo la orientación CURRENT (ActivityInfo.SCREEN_ORIENTATION_ *) de un dispositivo Android?
- 2. ¿Cómo obtengo el UUID de un dispositivo bluetooth?
- 3. Cómo obtengo el ancho y alto máximo de un dispositivo en android
- 4. Crear y guardar archivo de registro en el dispositivo en Android
- 5. ¿Cómo obtener el android_id de un dispositivo?
- 6. Cómo instalar el archivo .apk en el dispositivo Android
- 7. ¿Cómo obtengo el ícono asociado con un tipo de archivo?
- 8. ¿Cómo redireccionar mi salida de registro de Logcat a la tarjeta SD en un dispositivo Android?
- 9. ¿Cómo obtengo el registro del servidor SVN?
- 10. ¿Cómo apagar un dispositivo Android?
- 11. Android - ¿Cómo imprimir desde un dispositivo Android?
- 12. ¿cómo obtengo el tamaño del archivo temporal en Android?
- 13. ¿Cómo puedo obtener mi dispositivo de identificación de registro
- 14. Habilitar mensajes de registro desde un dispositivo real en Logcat
- 15. QT 4.5 - cómo obtengo un dispositivo QPainter en un QGraphicsView
- 16. Cómo crear un archivo de dispositivo
- 17. ¿Cómo recuperar la ruta de un archivo de audio o uri desde el dispositivo en Android?
- 18. ¿Cómo ejecutar el código de Matlab en un dispositivo Android?
- 19. Android ¿Cómo obtengo el valor de un Switch correctamente?
- 20. ¿Cómo obtengo el nombre dir de un archivo con Perl?
- 21. ¿Cómo obtengo el ícono de un archivo en Java?
- 22. Registro de escritura de Android en el archivo
- 23. ¿Cómo controlar un dispositivo serial en Android?
- 24. Android: obteniendo de un dispositivo bluetooth
- 25. cómo medir HeartBeat usando un dispositivo Android
- 26. ¿Cómo cambiar la identificación del grupo de un archivo en un dispositivo Android rooteado?
- 27. Escribiendo un archivo que tiene el nombre de un dispositivo
- 28. Elija la carpeta en el dispositivo Android
- 29. ¿Cómo puedo ejecutar comandos de Linux en un dispositivo Android?
- 30. Eclipse: Selector de dispositivo Android - Desconocido Dispositivo Android 2.3.4
Esta línea de comandos no funciona para mí, me sale esta salida. Logcat leer: argumento no válido – neoneye
en la victoria: adb.exe – Macarse
nota que logcollector no funciona para versiones de Android 4.1 anterior ya que las aplicaciones están ahora sólo se les permite leer sus propias entradas de registro. (Https://groups.google.com/forum/#!topic/android-log-collector/vgYXYbg-O1U) –