官术网_书友最值得收藏!

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>日志

主站蜘蛛池模板: 克东县| 南京市| 乌兰察布市| 阜新| 柳河县| 当阳市| 宁陵县| 青阳县| 安徽省| 庆安县| 太仆寺旗| 满城县| 商洛市| 铜梁县| 双桥区| 柘荣县| 宣武区| 惠州市| 沽源县| 浮梁县| 昌吉市| 正阳县| 油尖旺区| 玛沁县| 阿拉善盟| 兴业县| 灌云县| 渝中区| 乌兰察布市| 上林县| 温宿县| 灵石县| 灵丘县| 建瓯市| 榆中县| 贡山| 土默特右旗| 绩溪县| 商河县| 内江市| 确山县|