Guardar Logcat en un archivo de texto en el dispositivo Android

Había encontrado algunos accidentes durante la ejecución de la aplicación en el dispositivo Android, que no se muestra en el emulador. Así que necesito guardar el Logcat en un archivo de texto en la memoria de mi dispositivo o tarjeta SD. ¿Podría por favor sugerirme un buen método para hacer esto?

adb shell logcat -t 500 > D:\logcat_output.txt 

Vaya a su terminal / línea de comandos y navegue a la carpeta con adb en ella, si su no ya se ha añadido a sus variables ambientales y pegar este comando.

T son las líneas numéricas que necesita para ver

D: \ logcat_output.txt es donde su logcat se almacenará.

Utilice una clase de aplicación al principio de su aplicación. Eso permite un manejo adecuado de archivos y registros. Aquí hay un ejemplo. Ese fragmento de código añade una nueva carpeta denominada "MyPersonalAppFolder" con otra carpeta llamada "registro" en el almacenamiento público externo. Después de que la salida logcat se borra y la nueva salida logcat se escribe en un nuevo archivo llamado logcatXXX.txt, donde XXX es el son el tiempo de milisegundos en este momento.

 public class MyPersonalApp extends Application { /** * Called when the application is starting, before any activity, service, or receiver objects (excluding content providers) have been created. */ public void onCreate() { super.onCreate(); if ( isExternalStorageWritable() ) { File appDirectory = new File( Environment.getExternalStorageDirectory() + "/MyPersonalAppFolder" ); File logDirectory = new File( appDirectory + "/log" ); File logFile = new File( logDirectory, "logcat" + System.currentTimeMillis() + ".txt" ); // create app folder if ( !appDirectory.exists() ) { appDirectory.mkdir(); } // create log folder if ( !logDirectory.exists() ) { logDirectory.mkdir(); } // clear the previous logcat and then write the new one to the file try { Process process = Runtime.getRuntime().exec("logcat -c"); process = Runtime.getRuntime().exec("logcat -f " + logFile); } catch ( IOException e ) { e.printStackTrace(); } } else if ( isExternalStorageReadable() ) { // only readable } else { // not accessible } } /* Checks if external storage is available for read and write */ public boolean isExternalStorageWritable() { String state = Environment.getExternalStorageState(); if ( Environment.MEDIA_MOUNTED.equals( state ) ) { return true; } return false; } /* Checks if external storage is available to at least read */ public boolean isExternalStorageReadable() { String state = Environment.getExternalStorageState(); if ( Environment.MEDIA_MOUNTED.equals( state ) || Environment.MEDIA_MOUNTED_READ_ONLY.equals( state ) ) { return true; } return false; } } 

Necesita los permisos correctos en su archivo .manifest:

 <uses-permission android:name="android.permission.READ_LOGS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

Ahora ejecuta tu aplicación y goto "/ tu almacenamiento externo / MyPersonalAppFolder / logs /"

Allí encontrará un archivo de registro.

Fuente: http://www.journal.deviantdev.com/android-log-logcat-to-file-while-runtime/

Editar:

Si desea guardar el registro de sólo algunas actividades en particular ..

reemplazar:

 process = Runtime.getRuntime().exec("logcat -f " + logFile); 

con:

 process = Runtime.getRuntime().exec( "logcat -f " + logFile + " *:S MyActivity:D MyActivity2:D"); 

Utilice la opción -f con logcat en su clase:

 Runtime.getRuntime().exec("logcat -f" + " /sdcard/Logcat.txt"); 

Esto volcará los registros al dispositivo almacenado en el archivo.

Tenga en cuenta que la ruta "/ sdcard /" puede no estar disponible en todos los dispositivos. Debe utilizar las API estándar para acceder al almacenamiento externo .

Agregue el permiso de manifiesto:

 uses-permission android:name="android.permission.READ_LOGS" private static final String COMMAND = "logcat -d -v time"; public static void fetch(OutputStream out, boolean close) throws IOException { byte[] log = new byte[1024 * 2]; InputStream in = null; try { Process proc = Runtime.getRuntime().exec(COMMAND); in = proc.getInputStream(); int read = in.read(log); while (-1 != read) { out.write(log, 0, read); read = in.read(log); } } finally { if (null != in) { try { in.close(); } catch (IOException e) { // ignore } } if (null != out) { try { out.flush(); if (close) out.close(); } catch (IOException e) { // ignore } } } } public static void fetch(File file) throws IOException { FileOutputStream fos = new FileOutputStream(file); fetch(fos, true); } 

Si sólo necesita guardar el logcat (sin su codificación), puede utilizar las aplicaciones aLogrec o aLogcat de Google Play.

Google Play Store: aLogcat y aLogrec

Como no puedo comentar todavía, publicaré esto como una respuesta

Hice lo que @HeisenBerg dijo, funcionó bien para mí, pero desde Android 6.0 en tenemos que pedir permiso en tiempo de ejecución, tuve que añadir lo siguiente:

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if(checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); } } 

Y llama

 process = Runtime.getRuntime().exec("logcat -f " + logFile); 

Sólo en la devolución de llamada onRequestPermissionsResult

  • Terser Colorear un mensaje de LogCat?
  • Android Log.v (), Log.d (), Log.i (), Log.w (), Log.e () - ¿Cuándo utilizar cada uno?
  • Huawei, logcat no mostrar el registro de mi aplicación?
  • Mensaje de error de Android datarouter logcat
  • Eclipse Android - Logcat Despejar demasiado rápido
  • Habilitar registro DEBUG en Blu-R1 HD (teléfono Amazon)
  • Cómo desactivar logcat Envolvimiento de texto en Eclipse Juno
  • E / art: Error al enviar la respuesta al depurador: Canal roto, pero la aplicación todavía se ejecuta
  • Registro de ahorros de Android en cada ejecución para el informe de error
  • Habilitar mensajes de registro de dispositivo real en Logcat
  • Android - formato json string en la salida logcat de adb
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.