努力攀登的程序猿

我是一直努力攀登的程序猿,這裏是我攀登過的每一快岩石
正文

Google有隻做日誌的貓,我有一隻做日誌的狗

(2016-02-19 16:20:29) 下一個

安卓模擬器裏做日誌的是LogCat,我的是LogDog。

public class LogDog implements UncaughtExceptionHandler {

這隻狗幫我做了好多事,最重要的是一旦遇到沒有抓住的例外,它就幫我記錄到文件裏。

@Overridepublic void uncaughtException(Thread thread, Throwable ex) {   // first display a toast message   new Thread() {      @Override      public void run() {         Looper.prepare();         Utility.instance().showToast("Sorry for the trouble, dumping uncaught exeption to SD card");      }   }.start();   try {      dump(ex);   } catch (Exception e) {      Log.e(TAG, "Failed to dump because " + e.getMessage());      e.printStackTrace();   }   if (_defaultHandler != null) {      _defaultHandler.uncaughtException(thread, ex);   } else {      // sleep so the toast can have time to display      try {         Thread.sleep(3000);      } catch (InterruptedException e) {      }      android.os.Process.killProcess(android.os.Process.myPid());   }}

它給我記錄這麽多內容:

private void dump(Throwable ex) throws IOException, NameNotFoundException {   PrintWriter writer = _instance.getWriter();   if(writer == null)      return;   String time = Utility.instance().getTimeString();   _writer.println(time);   PackageManager pm = _context.getPackageManager();   PackageInfo pi = pm.getPackageInfo(_context.getPackageName(), PackageManager.GET_ACTIVITIES);   _writer.print("App Version: ");   _writer.print(pi.versionName);   _writer.print('_');   _writer.println(pi.versionCode);   _writer.print("OS Version: ");   _writer.print(Build.VERSION.RELEASE);   _writer.print("_");   _writer.println(Build.VERSION.SDK_INT);   _writer.print("Vendor: ");   _writer.println(Build.MANUFACTURER);   _writer.print("Model: ");   _writer.println(Build.MODEL);   _writer.println();   ex.printStackTrace(_writer);   _writer.flush();   close();   File file = new File(PATH + "/" + _fileName);   File file2 = new File(PATH + "/" + _fileName + "." + time + ".txt");   file.renameTo(file2);}

它替我抓住了很多我沒有發現的臭蟲,真的很管用!

 

 

[ 打印 ]
閱讀 ()評論 (1)
評論
orikon 回複 悄悄話 能抓住運行時的exception.
登錄後才可評論.