即將完成我的Android應用程序。最後我發現我一直在使用一堆日誌語句,例如:日誌記錄策略
Log.d(TAG, "Blah-blah");
問題是:對於產品發佈,我該怎麼處理它們?
- 只是評論/條日誌報表
- 做別的事情更復雜?就像我以前用Log4J屬性做的那樣
請分享你的經驗。
即將完成我的Android應用程序。最後我發現我一直在使用一堆日誌語句,例如:日誌記錄策略
Log.d(TAG, "Blah-blah");
問題是:對於產品發佈,我該怎麼處理它們?
請分享你的經驗。
我不喜歡這樣,使編譯器中刪除所有記錄,如果DEBUG是假的:
if (Constant.DEBUG) Log.d(TAG, "mein gott, state is roflcopter");
您可以使用混淆工具在構建時刪除日誌語句。詳情請參閱here。
OK,我會調查選項。無論如何,有沒有像Log4J中的屬性的可能性? – barmaley 2010-12-02 13:52:38
據我所知,所有的信息都被記錄下來。然後,日誌的查看者可以選擇要顯示哪些消息。您只需編輯一個屬性即可禁用調試消息進入日誌。 – kgiannakakis 2010-12-02 14:15:50
取決於。如果您希望應用程序經常崩潰,那麼包含崩潰報告庫之一,但無論您決定如何執行,只是不要使用Log.d()
方法釋放它。
我沒有在Android上體驗特別,但我只希望留下記錄staements代碼和轉關閉log4j屬性文件中的日誌記錄。您甚至可能希望打開一些日誌記錄,以便在發生崩潰時您的應用程序將生成有用的日誌。
如果您擔心日誌語句生成過於計算密集型(例如,在大集合上調用toString),那麼您可以使用此模式。
if (Log.isDebugEnabled()) {
Log.Debug(bigCollection.toString());
}
有一個新的項目,它可以在android上啓用log4j。在slf4j上使用lo4gj是可能的。它還爲LogCat提供了一個appender。見項目android-logging-log4j或log4j support in android
我已經爲此特定目的創建了一個庫。它可以在這裏找到 - LumberJack。您可以使用Jitpack和Gradle安裝它(請檢查README.md
)。
安裝後,你就必須改變所有登錄調用樵夫呼叫(例如,LumberJack.d()
代替Log.d()
等)
標籤是可選的,默認設置爲「伐木工人」。您可以選擇自己設置默認標籤。
您可以隨時使用LumberJack.setLogLevel()
方法更改過濾。要刪除所有日誌,可以將LogLevel
設置爲LogLevel.None
。
LumberJack.setLogLevel(LogLevel.None);
所以,如果你只是想刪除所有logcat垃圾郵件日誌,你只需要設置日誌級別過濾器。
(可選)您可以選擇以相同的過濾機制登錄到文本文件而不是logcat。
如果您不想在Android發行版本中記錄某些內容,則可以使用自動生成的BuildConfig。點擊這裏查看更多信息:https://developer.android.com/studio/build/gradle-tips.html。你也可以閱讀這個問題的更多信息:BuildConfig file in android - Purpose and Possibilities。
因此,在你的代碼,您只要寫這樣的事:
if (BuildConfig.DEBUG) {
//your code just for development goes here
}
這種方法並不是真的錯,如果你問我,因爲它膨脹了你的代碼,這是最好的做法。 – 2010-12-02 09:06:34