2010-12-02 95 views
5

即將完成我的Android應用程序。最後我發現我一直在使用一堆日誌語句,例如:日誌記錄策略

Log.d(TAG, "Blah-blah"); 

問題是:對於產品發佈,我該怎麼處理它們?

  1. 只是評論/條日誌報表
  2. 做別的事情更復雜?就像我以前用Log4J屬性做的那樣

請分享你的經驗。

回答

0

我不喜歡這樣,使編譯器中刪除所有記錄,如果DEBUG是假的:

if (Constant.DEBUG) Log.d(TAG, "mein gott, state is roflcopter"); 
+1

這種方法並不是真的錯,如果你問我,因爲它膨脹了你的代碼,這是最好的做法。 – 2010-12-02 09:06:34

4

您可以使用混淆工具在構建時刪除日誌語句。詳情請參閱here

+0

OK,我會調查選項。無論如何,有沒有像Log4J中的屬性的可能性? – barmaley 2010-12-02 13:52:38

+0

據我所知,所有的信息都被記錄下來。然後,日誌的查看者可以選擇要顯示哪些消息。您只需編輯一個屬性即可禁用調試消息進入日誌。 – kgiannakakis 2010-12-02 14:15:50

0

取決於。如果您希望應用程序經常崩潰,那麼包含崩潰報告庫之一,但無論您決定如何執行,只是不要使用Log.d()方法釋放它。

0

我沒有在Android上體驗特別,但我只希望留下記錄staements代碼和轉關閉log4j屬性文件中的日誌記錄。您甚至可能希望打開一些日誌記錄,以便在發生崩潰時您的應用程序將生成有用的日誌。

如果您擔心日誌語句生成過於計算密集型(例如,在大集合上調用toString),那麼您可以使用此模式。

if (Log.isDebugEnabled()) { 
    Log.Debug(bigCollection.toString()); 
} 
1

我已經爲此特定目的創建了一個庫。它可以在這裏找到 - LumberJack。您可以使用Jitpack和Gradle安裝它(請檢查README.md)。

安裝後,你就必須改變所有登錄調用樵夫呼叫(例如,LumberJack.d()代替Log.d()等)

標籤是可選的,默認設置爲「伐木工人」。您可以選擇自己設置默認標籤。

您可以隨時使用LumberJack.setLogLevel()方法更改過濾。要刪除所有日誌,可以將LogLevel設置爲LogLevel.None

LumberJack.setLogLevel(LogLevel.None); 

所以,如果你只是想刪除所有logcat垃圾郵件日誌,你只需要設置日誌級別過濾器。

(可選)您可以選擇以相同的過濾機制登錄到文本文件而不是logcat。