ユーザーがログを収集したいときはいつでもAndroid logcatをファイルにダンプしたいです。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 を参照してください
または、このバリアンを試すことができます
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(); }
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" />