2016-05-16 17 views
0

私はアンドロイドアプリケーションログをテキストファイルに保存し、例外やフィードバックを処理するために電子メールで送信します。私のアプリケーションでは次のコードを実装しましたが、ログファイルには何も含まれていませんし、コードを実行した後は空です。アプリケーションログをテキストファイルに保存できません

try { 
     Process process = Runtime.getRuntime().exec("logcat -d"); 
     BufferedReader bufferedReader = new BufferedReader(
       new InputStreamReader(process.getInputStream())); 

     StringBuilder logString = new StringBuilder(); 
     String line; 
     while ((line = bufferedReader.readLine()) != null) { 
      logString.append(line); 
     } 

     File logFile = new File("sdcard/log.txt"); 
     if (!logFile.exists()) { 
      try { 
       logFile.createNewFile(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 

     BufferedWriter buf = new BufferedWriter(new FileWriter(logFile, true)); 
     buf.append(logString); 
     buf.newLine(); 
     buf.close(); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

私は自分のアプリケーション全体でlogcatするログメッセージを書き込むためLog.iLog.eLog.wを使用。

誰かが私の問題に取り組んでくれたら、私は感謝します。

答えて

2

public static void appendLog(String text) { 
    if (true) { 

     File root = android.os.Environment.getExternalStorageDirectory(); 
     File dir = new File(root.getAbsolutePath() + "/YourAppName"); 
     dir.mkdir(); 
     File logFile = new File(dir, "YourAppName.txt"); 

     if (!logFile.exists()) { 
      try { 
       logFile.createNewFile(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     try { 
      // BufferedWriter for performance, true to set append to file 
      // flag 
      BufferedWriter buf = new BufferedWriter(new FileWriter(logFile, 
        true)); 
      buf.append(text 
        + " - " 
        + new SimpleDateFormat("MM/dd/yyyy HH:mm:ss") 
          .format(new Date())); 
      buf.newLine(); 
      buf.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

、その代わりに、アプリケーション内のLog.iLog.eLog.w

+0

のこのメソッドを使用しますが、後であなたの答えをチェックし、他の人があまりにも – Shubhank

+0

を理解できるように、あまりにも変化を説明しようと、これを試してみてくださいなぜあなたはappendログに 'Process'を使用するのか分かりません。実際には 'BufferedWriter'を使用して既存のWriterをラップし、出力をバッファリングします。プロセスや他のメソッドを使う必要はありません。単にファイルを取得し、以前のログにあなたのログを書き込む(追加する)。 –

+0

@AbhishekPatel素早くお返事ありがとうございます。私はプロセスを使用してシステムログにアクセスしました。あなたの答えによると、私は処理された例外やクラッシュさえ追跡できません。追加されたログのみ監視できます。 – mohammad

関連する問題