做為一個 Java 攻城師, 我們除了關心系統的架構這種 high level 的問題,還需要了解一些語言的陷阱,異常的處理,以及日誌的輸出,這些"雞毛蒜皮"的細節。
我們需要通過列印一條條日誌來掌握程序運行的狀態,下面我們就來講解鴻蒙系統中的 HiLog 日誌工具的具體使用方法。
①使用 HiLog 前必須在 HiLog 的一個輔助類 HiLogLabel 中定義日誌類型、服務域和標記。
static final HiLogLabel label = new HiLogLabel(HiLog.LOG_APP, 0x00201, "MY_TAG");
上面有三個參數:
日誌類型,我們的應用一般取一個常量值:HiLog.LOG_APP,表示是第三方應用。
服務域,16 進位整數形式,取值範圍是 0x0 ~ 0xFFFFF。一般情況下,我們建議把這 5 個 16 進位數分成兩組,前面三個數表示應用中的模塊編號,後面兩個表示模塊中的類的編號。
一個字符串常量,它標識方法調用的類或服務行為。一般情況下就寫類的名字,一般我可用這個標記對日誌進行過濾。
②日誌的級別,和其他日誌一樣,HiLog 也分成了幾個日誌級別。
由上到下信息越嚴重:
debug:調試信息
info:普通信息
warn:警告信息
error:錯誤信息
fatal:致命錯誤信息
String url = "www.baidu.com";
int errno = 0;
HiLog.warn(label, "Failed to visit %{private}s, reason:%{public}d.", url, errno);
按照上述格式就可用在控制臺中輸入日誌信息了,裡邊還有點東西,需要進一步解釋一下。
%{private}s 和 %{public}d 這兩個符號我們可用理解為佔位符,真正列印到控制臺上的值是後面的變量:
public class MainAbility extends Ability {
static final HiLogLabel HI_LOG_LABEL = new HiLogLabel(HiLog.LOG_APP,0x00101,"MainAbility");
@Override
public void onStart(Intent intent) {
HiLog.info(HI_LOG_LABEL,"======MainAbility onStart is running....");
String ss = "tesst string";
int ii = 11111;
HiLog.info(HI_LOG_LABEL,"======字符串信息加上變量信息,格式化列印字符串%{public}s,整數%{private}d",ss,ii);
super.onStart(intent);
super.setMainRoute(MainAbilitySlice.class.getName());
}
}
https://edu.51cto.com/course/26133.html
專注開源技術,共建鴻蒙生態