将android logcat数据写入一个文件

我想在用户想要收集日志的时候将Android logcat转储到一个文件中。 通过adb工具,我们可以使用adb logcat -f filename将日志redirect到一个文件,但是我怎样才能以编程的方式进行呢?

Solutions Collecting From Web of "将android logcat数据写入一个文件"

这是一个读取日志的例子 。

你可以改变这个写入一个文件而不是一个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

或者你可以试试这个varian

尝试{
    最终文件path=新文件(
             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); } 

以上方法将所有日志写入文件。 也请在Manifest文件中添加下面的权限

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