Запись данных регистратора android в файл

Я хочу сбросить logcat Android в файл всякий раз, когда пользователь хочет собирать журналы. Через инструменты adb мы можем перенаправить журналы в файл с помощью adb logcat -f filename , но как это сделать программно?

Вот пример чтения журналов.

Вы можете изменить это для записи в файл вместо TextView .

Требуется разрешение в AndroidManifest :

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

Код:

 public class LogTest extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); 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) { } } } 

Logcat может писать непосредственно в файл:

 public static void saveLogcatToFile(Context context) { String fileName = "logcat_"+System.currentTimeMillis()+".txt"; File outputFile = new File(context.getExternalCacheDir(),fileName); @SuppressWarnings("unused") Process process = Runtime.getRuntime().exec("logcat -f "+outputFile.getAbsolutePath()); } 

Дополнительная информация о logcat: см. http://developer.android.com/tools/debugging/debugging-log.html

Или вы можете попробовать этот варианец

 пытаться {
     Final Путь к файлу = новый файл (
             Environment.getExternalStorageDirectory (), "DBO_logs5");
     If (! Path.exists ()) {
         path.mkdir ();
     }
     Runtime.getRuntime (). Exec (
             "Logcat -d -f" + path + File.separator
                     + "Dbo_logcat"
                     + ".txt");
 } Catch (IOException e) {
     e.printStackTrace ();
 }
 public static void writeLogToFile(Context context) { String fileName = "logcat.txt"; File file= new File(context.getExternalCacheDir(),fileName); if(!file.exists()) file.createNewFile(); String command = "logcat -f "+file.getAbsolutePath(); Runtime.getRuntime().exec(command); } 

Вышеуказанный метод будет записывать все записи в файл. Также добавьте ниже разрешения в файл манифеста

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