2011-12-19 6 views
0

私はSD CARDのファイルに例外ログを書き込む機能を持っていますが、問題はその行の最初の行だけを書くことです。例外などどのように全体のログを取得するためのアイデア?Androidでlogcatメッセージ全体をファイルに書き込む

をファイルに保存:

public static void writeLogs(String text){ 
    File logFile = new File("sdcard/Documents/Public/Log/crash_logs.file"); 
     if (!logFile.exists()) 
     { 
      try 
      { 
      logFile.createNewFile(); 
      } 
      catch (IOException e) 
      { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      } 
     } 
     try 
     { 
      //BufferedWriter for performance, true to set append to file flag 
      BufferedWriter buf = new BufferedWriter(new FileWriter(logFile, true)); 
      buf.append("---START---"); 
      buf.newLine(); 
      buf.append(text); 
      buf.newLine(); 
      buf.append("---END---"); 
      buf.newLine(); 
      buf.close(); 
     } 
     catch (IOException e) 
     { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
} 

起動:

  catch (Exception e) { 
       e.printStackTrace(); 
       rpc.writeLogs(e.toString()); 
      } 

任意のアイデア?

答えて

1

e.toStringはのprintStackTrace(ライターまたはストリーム)をしてみてください、代わりにAPPENDの

-1

使用のprintln()をスタックを提供していません。

PrintWriter p = new PrintWriter(new FileWriter("your text file.txt")); 
p.println(text); 
+0

[BufferedWriter](http://developer.android.com/reference/java/io/BufferedWriter.html)には 'println()'メソッドはありません。それ以外に理由が*なぜ*これがよりよいかを提供することは素晴らしいことでしょう。 –

+0

申し訳ありませんが、以前はBufferedWriterについては読んでいません。私は以前のJava SEプロジェクトでPrintWriterを使用しています。更新された回答をご覧ください。 – josephus

+0

また、e.toStringはe.printStackTrace()の出力と異なる場合があります。 e.toString()の値をチェックしましたか? – josephus

0

この問題もありました。私はe.toString()を\ nで分割して終了し、各行を個別にログに書きました。

関連する問題