- Hello HarmonyOS!:鴻蒙應用開發從入門到精通
- 孫洋
- 1679字
- 2022-05-06 15:42:10
1.4.8 HiLog日志
HiLog 是 HarmonyOS 提供的日志系統。在程序開發時,開發者不僅可以通過打斷點的方式來調試程序,還可以在關鍵位置輸出信息來判斷程序的執行情況。這種方式不會打斷程序的正常運行,對用戶是無感的,開發者可以通過記錄報錯的日志,來判斷應用程序的運行情況,從而完成對程序的錯誤排除和優化。記錄程序的執行情況,可以為開發者判斷程序運行情況提供最直接的信息。在HarmonyOS中,輸出日志需要用到HiLog對象和HiLogLabel對象。
1.HiLog
在HarmonyOS開發過程中,會多次使用HiLog對象來輸出程序的執行信息。HiLog日志由HiLog對象來輸出,并且為了方便日志的查看,HiLog對象可以根據日志的類別來設置多種日志級別,表1-5是HiLog對象中的方法。
表1-5 HiLog對象中的方法

在打印日志時,為了方便對信息進行分類,不可以隨意使用這些方法,否則會帶來日志閱讀上的困難,影響對程序運行狀況的判斷。應該先對日志進行分類,然后使用對應的打印方法進行輸出。HiLog對象的方法中包含以下三個參數。
(1)label:HiLogLabel標簽,用于設置日志的篩選條件。
(2)format:格式字符串,用于日志的格式化輸出。
(3)args:可以為 0 個或多個參數,是格式字符串中參數類型對應的參數列表。參數的數量、類型必須與格式字符串中的標識一一對應。
2.HiLogLabel
系統在正常運行時會打印很多日志,如果要在眾多的日志中找到要調試的應用程序的日志,就需要對日志進行篩選。HiLogLabel對象用于日志的篩選。它只有以下一個構造方法。
HiLogLabel(int type,int domain,String tag)
HiLogLabel對象的構造方法包括三個參數。
(1)type:用于指定輸出日志的類型。HiLog 對象中當前只提供了一種日志類型,即應用日志類型LOG_APP。
(2)domain:用于指定輸出日志所對應的業務領域,取值范圍為 0x0~0xFFFFF。開發者可以根據需要進行自定義。
(3)tag:用于指定日志標識,可以為任意字符串,建議標識為所在的類或者業務名稱。
這些參數可作為篩選日志的條件使用。在一個應用或者某個類內,日志的標簽通常不會變,可以將 HiLogLabel 對象作為成員變量來使用,按照以下方式進行聲明。
static final HiLogLabel LABEL_LOG=new HiLogLabel(HiLog.LOG_APP,0xD001100,"MY_TAG");
HiLogLabel對象包括以下幾種枚舉值。
(1)HiLog.LOG_APP:應用日志。
(2)HiLog.INFO:普通日志。
(3)HiLog.DEBUG:調試日志。
(4)HiLog.WARN:警告日志。
(5)HiLog.ERROR:錯誤日志。
(6)HiLog.FATAL:嚴重錯誤日志。
3.HiLog日志控制臺
DevEco Studio提供了HiLog日志控制臺來查看日志。開發者可以通過設置多種過濾條件來篩選日志,如圖1-106所示。

圖1-106 HiLog日志控制臺
HiLog日志控制臺的左側菜單中的各項含義如下。
Up the stack trace(Alt+Ctrl+向上箭頭):向上查看日志。
Down the stack trace(Alt+Ctrl+向下箭頭):向下查看日志。
Soft-Wrap:啟用日志換行并防止水平滾動。
Scroll to End:時刻滾動到底部,查看最新日志。
Print:調用打印機打印日志。
Clear HiLog:清理設備的日志緩存,并清除當前控制臺的日志。建議每次調試應用前,點擊該按鈕清除日志。
Screen Capture:對當前運行的設備截屏,并將其保存在本地。
HiLog Console Setting:HiLog日志控制臺設置,可修改日志顏色、緩沖區大小。
Split Horizontally:將HiLog日志控制臺分屏,可以設置不同的篩選條件。
Close:關閉當前的HiLog日志控制臺,分屏后可用。
4.日志輸出示例
新建 Empty Ability (Java)模板項目,在“Project Type”選區中選擇“Application”單選按鈕(項目創建方法見1.4.1節,下同),在MainAbilitySlice中編寫代碼:


啟動模擬器,將程序運行起來,在DevEco Studio下方的HiLog日志控制臺中,點擊“Log”選項,可以看到當前系統打印的 HiLog 日志,如圖 1-107所示。隨著系統的運行,日志也在不斷地輸出,我們無法很快地定位到上述程序中打印的日志。

圖1-107 HiLog日志
在篩選框中,輸入構造HiLogLabel對象時設置的tag參數“MY_TAG”,可以對日志進行篩選,如圖1-108所示。

圖1-108 使用tag參數篩選日志
可以看到,程序中的日志被打印出來,同時使用顏色對日志級別進行了分類,方便對日志類別進行篩查。同樣,使用 domain 參數也可以篩選出相應的日志,如圖1-109所示。

圖1-109 使用domain參數篩選日志
也可以用domain參數和tag參數的組合來篩選日志,如圖1-110所示。

圖1-110 使用domain參數和tag參數的組合篩選日志
HiLog日志還支持格式化日志輸出,格式字符串中可以設置多個參數,例如格式字符串為“Load%s failed.”,“%s”是參數類型為String的變參標識,具體取值在args中指定。
每個參數都可以添加隱私標識{public}或{private},默認為{private}。{public}表示日志打印結果可見,{private}表示日志打印結果不可見,此時輸出的日志為<private>,比如“Load{private}%s failed.”。
在MainAbilitySlice中打印下面的日志:
HiLog.warn(LABEL_LOG,"Load%{private}s failed,reason:%{public}d.","www.harmonyos.com",503);
輸出的日志如圖1-111所示。
可以看到,被{private}修飾的變量在日志中顯示為<private>。

圖1-111 <private>日志
- IBM Lotus Notes 8.5 User Guide: LITE
- 從零開始:AutoCAD 2015中文版機械制圖基礎培訓教程
- CoffeeScript Application Development
- Drupal Multimedia
- 照相館的故事:Photoshop CC 2018調色合成精修
- Web 2.0 Solutions with Oracle WebCenter 11g
- NHibernate 2 Beginner's Guide
- BIRT 2.6 Data Analysis and Reporting
- Photoshop CC摳圖+修圖+調色+合成+特效實戰視頻教程
- ANSYS Workbench中文版超級學習手冊
- Spark Cookbook 中文版
- Photoshop+CorelDRAW平面設計案例實戰:從入門到精通(視頻自學全彩版)
- 原片蛻變:Photoshop CC商業修圖必修課
- After Effects 影視后期特效:短視頻制作實戰寶典
- Inkscape Starter (Microcontent)