2012-04-11 145 views
2

我正在開發一個使用位置服務的應用程序。我需要使用Log.d()來調試應用程序,但需要將設備一直連接到計算機。這對我來說是不可能的。我將在旅行中測試該應用大約兩個小時。當時我無法將其連接到PC。脫機調試Android應用程序

有沒有什麼辦法可以保存手機中的日誌並在以後檢索,並可以看到日誌數據。

回答

3

介紹自己Logger類,爲android.util.Log類的包裝,這都將重定向輸出到文件和控制檯:

public class Logger { 

    public static PrintWriter printWriter = null; 

    private static void init() { 
     ... 
     // Check if external media is writable 
     ... 

     if (printWriter == null) { 
      try { 
       File dir = new File(Environment.getExternalStorageDirectory() + LOG_DIR); 
       dir.mkdirs(); 
       printWriter = new PrintWriter(new FileWriter(new File(dir, LOG_FILE), true)); 
      } 
      catch (IOException e) { 
       Log.e(Logger.class.getName(), "initExternal() -> IOException", e); 
      } 
     } 
    } 

    private static synchronized int log(int priority, String tag, String msg) { 
     int res = Log.println(priority, tag, msg); 

     init(); // May be called just once, depending on your requirements 

     printWriter.print(tag + " "); 
     printWriter.print(msg + "\r\n"); 
     printWriter.flush(); 
     return res; 
    } 


    // Duplicates of standard android.util.Log methods: 
    public static int v(String tag, String msg) { 
     return log(Log.VERBOSE, tag, msg); 
    } 
    public static int v(String tag, String msg, Throwable tr) { 
     return log(Log.VERBOSE, tag, msg + '\n' + Log.getStackTraceString(tr)); 
    } 
    public static int d(String tag, String msg) { 
     return log(Log.DEBUG, tag, msg); 
    } 
    public static int d(String tag, String msg, Throwable tr) { 
     return log(Log.DEBUG, tag, msg + '\n' + Log.getStackTraceString(tr)); 
    } 

    ... 

} 
1

有些應用程序會抓取最後幾百行日誌,並通過電子郵件發送到您想要發送到的任何電子郵件。我已經使用日誌收集 https://play.google.com/store/apps/details?id=com.xtralogic.android.logcollector&feature=search_result#?t=W251bGwsMSwyLDEsImNvbS54dHJhbG9naWMuYW5kcm9pZC5sb2djb2xsZWN0b3IiXQ .. ,可以推薦它,確實你需要爲你做的工作:d

+0

似乎只收集最後200日誌.... aLogcat是好多了 – 2012-04-12 07:26:15