web-dev-qa-db-ja.com

Android logcatデータをファイルに書き込む

ユーザーがログを収集したいときはいつでもAndroid logcatをファイルにダンプしたいです。adbツールを介して、adb logcat -f filenameを使用してログをファイルにリダイレクトできます。

69
Brijesh Masrani

以下に、ログの読み取りの を示します。

これを変更して、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) {
    }
  }
}
123
jkhouw1

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 を参照してください

39
Stéphane

または、このバリアンを試すことができます

 try {
 final File path = new File(
 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(); 
} 
1
xoxol_89
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" />
0
Ijas Ahamed N