2012-11-30 77 views
1

當我測試我的應用程序時,我正在做一堆日誌記錄,這對於獲取有關變量狀態等的信息很有用。iOS - 應用程序日誌測試和生產代碼

但是我讀過你應該在生產代碼中使用稀疏記錄(因爲它可能會減慢你的應用程序的運行速度)。但現在我的問題是:如果我的應用程序正在生產並且人們正在使用它,每當發生崩潰(上帝禁止)時,如果我已經刪除了日誌記錄語句,我將如何解釋崩潰信息?那麼我想我只會有一個堆棧跟蹤供我解釋?

這是否意味着我應該只在生產代碼中留下日誌?在哪裏解釋發生的事情真的非常重要?

此外,日誌記錄將如何與崩潰報告相關聯?他們會合並嗎?我正在考慮使用Flurry作爲分析和崩潰報告...

回答

2

你絕對應該在你發佈的應用程序中包含大量日誌記錄。正如您所懷疑的那樣,它可以在調試時幫助您,甚至可以幫助您的高級用戶進行自我調試,以確保您的日誌消息的措辭良好,合理自明的幷包含所有相關詳細信息。

好的測井系統有很多方面。有一些常見的模式通常很好遵循(儘管在iOS上特別適用於某些應用,比其他模式更適用):

  1. 按嚴重性區分日誌。例如,錯誤,警告,信息,調試。作爲另一個例子,Syslog執行此操作。除了幫助您首先關注更嚴重的問題之外,您還可以爲發佈的「信息」構建一個最低級別,從而排除更詳細的調試問題,同時保留大部分您需要的所有內容出錯。通過這種方式,您可以修剪出可能非常冗長或頻繁出現的日誌消息(從而降低了應用程序的風險),但留下了重要的日誌消息。
  2. 允許在運行時配置日誌記錄級別(通常通過命令行標誌完成,但顯然不在iOS上)。例如,您可以默認顯示警告和錯誤,但可以通過標記進行擴展。
  3. 至少在調試版本中包含所有日誌消息中的文件名和行號。您可能對發佈版本中包含文件名有所保留,但至少包括行號 - 這有助於確保您查看調試時的正確代碼;您可能(意外或有意)從同一文件中的多個位置獲得類似的日誌語句。
  4. 用簡單的英文寫出您的日誌消息,並使用良好的語法和最小縮寫,幷包含所有相關變量的值。還包括關於該情況的後果的陳述,如果出現錯誤或警告。例如「無法連接到某個服務器:1234 - 錯誤-18(ETIMEOUT)。無法確定是否有可用的應用程序更新。」
  5. 儘可能減少日誌中的用戶敏感數據,並且非常小心您對包含它的任何日誌所做的操作。千萬不要記錄密碼或這種性質的東西 - 甚至不會像它們的長度或哈希值那樣的輔助事物。請注意,即使他們提供的網站地址等看似良性的東西也可以被認爲是敏感的(他們可能不希望它知道他們頻繁www.lumberjacksandpressedwildflowers.com)。如果您有任何類型的日誌傳輸,這一點尤其重要 - 您需要採用SSL等。

您可以從預先構建的日誌記錄系統獲得很多這些功能,例如, CocoaLumberjackNSLogger(或both)。毫無疑問,還有其他的。

1

據我所知,處理您的問題的最佳選擇之一是Crashalitics。 這是一個完全集成,免費且易於使用的崩潰報告系統。 祝你好運!

相關問題