Cómo escribir el registro a la tarjeta sd en Android?

Mi programa se está estrellando en el dispositivo. Quiero exactamente capturar el registro de mi programa mientras se ejecuta en mi dispositivo. Yo quiero escribir el registro a mi tarjeta sd, hasta el punto de estrellarse. ¿Cómo puedo conseguir esto?

Prueba esto

Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this)); // add this to your activity page public class ExceptionHandler implements java.lang.Thread.UncaughtExceptionHandler { private final Context myContext; private final String LINE_SEPARATOR = "\n"; UncaughtExceptionHandler defaultUEH; public ExceptionHandler(Context con) { myContext = con; defaultUEH = Thread.getDefaultUncaughtExceptionHandler(); } @SuppressWarnings("deprecation") public void uncaughtException(Thread thread, Throwable exception) { StringWriter stackTrace = new StringWriter(); exception.printStackTrace(new PrintWriter(stackTrace)); StringBuilder errorReport = new StringBuilder(); errorReport.append("************ CAUSE OF ERROR ************\n\n"); errorReport.append(stackTrace.toString()); errorReport.append("\n************ DEVICE INFORMATION ***********\n"); errorReport.append("Brand: "); errorReport.append(Build.BRAND); errorReport.append(LINE_SEPARATOR); errorReport.append("Device: "); errorReport.append(Build.DEVICE); errorReport.append(LINE_SEPARATOR); errorReport.append("Model: "); errorReport.append(Build.MODEL); errorReport.append(LINE_SEPARATOR); File root = android.os.Environment.getExternalStorageDirectory(); String currentDateTimeString = DateFormat.getDateTimeInstance().format( new Date()); File dir = new File(root.getAbsolutePath() + "/dir_name/log"); if (!dir.exists()) { dir.mkdirs(); } File file = new File(dir, "log.txt"); try { BufferedWriter buf = new BufferedWriter(new FileWriter(file, true)); buf.append(currentDateTimeString + ":" + errorReport.toString()); buf.newLine(); buf.close(); } catch (IOException e) { e.printStackTrace(); } defaultUEH.uncaughtException(thread, exception); System.exit(0); } } 

Una vez que conseguí esto de algún lugar en SO. Prueba esto:

 public static void printLog(Context context){ String filename = context.getExternalFilesDir(null).getPath() + File.separator + "my_app.log"; String command = "logcat -f "+ filename + " -v time *:V"; Log.d(TAG, "command: " + command); try{ Runtime.getRuntime().exec(command); } catch(IOException e){ e.printStackTrace(); } } 

Esto imprime el registro continuamente hasta la salida de la aplicación.

Prueba esto :

  public void appendLog(String text) { File logFile = new File("sdcard/log.file"); if (!logFile.exists()) { try { logFile.createNewFile(); } catch (IOException e) { Log.e(TAG, e.getMessage(), e); } } try { //BufferedWriter for performance, true to set append to file flag BufferedWriter buf = new BufferedWriter(new FileWriter(logFile, true)); buf.append(text); buf.newLine(); buf.close(); } catch (IOException e) { Log.e(TAG, e.getMessage(), e); } } 

Si desea capturar sólo la excepción con el stacktrace, que en la mayoría de los casos es suficiente para obtener lo que estaba mal, ACRA es una solución ganadora.

Si usted desea escribir algo a su tarjeta del SD entonces toma en la consideración que usted no puede asumir que cualquier dispositivo tiene almacenaje externo que usted puede escribir a. A menos que valide esto.

Para traer otra opción de escribir en el almacenamiento externo, puede utilizar esta sencilla biblioteca:
android-simple-almacenamiento

Así es como lo usas:

  • Prepárese en alguna parte de su aplicación:

     Storage storage = SimpleStorage.getExternalStorage(); // create your own directory storage.createDirectory("MyDir"); // create the file you want to write to inside your new directory storage.createFile("MyDir", "MyFile.txt", ""); 
  • Añada cualquier cadena (o byte []) cuando quiera a este archivo:

     storage.appendFile("MyDir", "MyFile.txt", "your log line"); 

Usted puede crear / leer / actualizar / eliminar con esta pequeña biblioteca de archivos en los almacenes internos y externos muy fácil. Y, tener en cuenta que la escritura en el mismo archivo aumentará el espacio que se necesita. Puede utilizar getSize() de la misma biblioteca para validar.

  • Registro de ahorros de Android en cada ejecución para el informe de error
  • ¿No se puede pausar la actividad?
  • No se pudo encontrar la clase 'android.support.v7.widget.SearchView $ 5'
  • android.content.res.Resources $ NotFoundException: String resource ID # 0x12 - onLocationChanged ()
  • No se pudo cargar el módulo de memtrack Error de Logcat
  • Cómo arreglar esto: on logcat - >> error cargando /system/media/audio/ui/Effect_Tick.ogg ??
  • ¿Puedo ejecutar logcat en el teléfono móvil por issung un comando en el shell?
  • ¿Hay demasiada escritura de registro que disminuye el rendimiento de la aplicación android?
  • Logcat no muestra mis llamadas de registro
  • Guardar matrices de cadenas con SharedPreference
  • El error de vista personalizada de Android: android.view.InflateException
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.