日誌

任何高質量的 Android 應用程式都會通過應用程式日誌跟蹤它正在做什麼。這些日誌允許開發人員輕鬆除錯幫助,以診斷應用程式正在發生的事情。可在此處找到完整的 Android 文件,但摘要如下:

基本日誌記錄

Log 類是編寫開發人員日誌的主要來源,通過指定 tagmessage。標記是你可以用來過濾日誌訊息的標識,以標識來自你的特定活動的行。只需致電

Log.v(String tag, String msg);

並且 Android 系統會向 logcat 寫一條訊息:

07-28 12:00:00.759 24812-24839/my.packagename V/MyAnimator: Some log messages
 └ time stamp             |  app.package┘     |    └ any tag  |
     process & thread ids ┘          log level┘               └ the log message

提示:
注意程序 ID 和執行緒 ID。如果它們是相同的 - 日誌來自主/ UI 執行緒!

可以使用任何標記,但通常使用類名作為標記:

public static final String tag = MyAnimator.class.getSimpleName();

日誌級別

Android 記錄器有 6 個不同的級別,每個級別都有一定的用途:

  • ERRORLog.e()
    • 用於表示嚴重失敗,這是投擲 Exception 時列印的等級。
  • WARNLog.w()
    • 用於指示警告,主要用於可恢復的故障
  • INFOLog.i()
    • 用於指示有關應用程式狀態的更高階別資訊
  • DEBUGLog.d()
    • 用於記錄在除錯應用程式時有用的資訊,但在執行應用程式時會妨礙這些資訊
  • VERBOSELog.v()
    • 用於記錄反映應用程式狀態的小細節的資訊
  • ASSERTLog.wtf()
    • 用於記錄有關不應發生的情況的資訊。
    • wtf 代表多麼可怕的失敗

記錄的動機

日誌記錄的動機是通過瀏覽應用程式中的事件鏈來輕鬆查詢錯誤,警告和其他資訊。例如,假設一個應用程式從文字檔案中讀取行,但錯誤地認為該檔案永遠不會為空。日誌跟蹤(不記錄的應用程式)看起來像這樣:

E/MyApplication: Process: com.example.myapplication, PID: 25788
                          com.example.SomeRandomException: Expected string, got 'null' instead

接下來是一堆最終導致違規行的堆疊跟蹤,其中通過偵錯程式逐步執行最終會導致問題

但是,啟用了日誌記錄的應用程式的日誌跟蹤可能如下所示:

V/MyApplication: Looking for file myFile.txt on the SD card
D/MyApplication: Found file myFile.txt at path <path>
V/MyApplication: Opening file myFile.txt
D/MyApplication: Finished reading myFile.txt, found 0 lines
V/MyApplication: Closing file myFile.txt
...
E/MyApplication: Process: com.example.myapplication, PID: 25788
                          com.example.SomeRandomException: Expected string, got 'null' instead

快速瀏覽日誌,很明顯檔案是空的。

記錄時需要考慮的事項:

雖然日誌記錄是一個強大的工具,它允許 Android 開發人員更深入地瞭解其應用程式的內部工作,但日誌記錄確實存在一些缺點。

日誌可讀性:

Android 應用程式通常會同時執行多個日誌。因此,每個日誌都易於閱讀並且僅包含相關的必要資訊非常重要。

效能:

記錄確實需要少量的系統資源。一般而言,這並不值得關注,但是,如果過度使用,日誌記錄可能會對應用程式效能產生負面影響。

安全:

最近,Google Play 市場中新增了幾個 Android 應用程式,允許使用者檢視所有正在執行的應用程式的日誌。這種非預期的資料顯示可以允許使用者檢視機密資訊。根據經驗,將應用程式釋出到市場之前,請始終刪除包含非公開資料的日誌。

結論:

日誌記錄是 Android 應用程式的重要組成部分,因為它為開發人員提供了強大功能。建立有用的日誌跟蹤的能力是軟體開發中最具挑戰性的方面之一,但 Android 的 Log 類有助於使其更容易。

有關更多文件和示例,請訪問 Logging 並使用 Logcat