# HiLog开呿Œ‡å¯¼ ## 概述 HiLog是OpenHarmony日志系统,æä¾›ç»™ç³»ç»Ÿæ¡†æž¶ã€æœåŠ¡ã€ä»¥åŠåº”ç”¨æ‰“å°æ—¥å¿—,记录用户æ“作ã€ç³»ç»Ÿè¿è¡Œçжæ€ç‰ã€‚ æœ¬ç« èŠ‚å†…å®¹å¯¹æ ‡å‡†ç³»ç»Ÿç±»è®¾å¤‡ï¼ˆå‚考内å˜â‰¥128MiB)适用。 ## 接å£è¯´æ˜Ž **表1** C++ã€Cçš„å‡½æ•°æŽ¥å£ | C++ | | C | | -------- | -------- | -------- | | ç±» | 方法 | 方法/å® | | HiLog | int Debug(const HiLogLabel &label, const char \*fmt, ...) | HILOG_DEBUG(type, ...) | | | int Info(const HiLogLabel &label, const char \*fmt, ...) | HILOG_INFO(type, ...) | | | int Warn(const HiLogLabel &label, const char \*fmt, ...) | HILOG_WARN(type, ...) | | | int Error(const HiLogLabel &label, const char \*fmt, ...) | HILOG_ERROR(type, ...) | | | int Fatal(const HiLogLabel &label, const char \*fmt, ...) | HILOG_FATAL(type, ...) | | | NA | int HiLogPrint(LogType type, LogLevel level, unsigned int domain, const char \*tag, const char \*fmt, ...) | | | boolean IsLoggable(unsigned int domain, const char \*tag, LogLevel level) | bool HiLogIsLoggable(unsigned int domain, const char \*tag, LogLevel level) | | HiLogLabel | struct HiLogLabel | LOG_DOMAIN<br/>LOG_TAG | **表2** C++接å£è¯´æ˜Žå‡½æ•°å‚数和功能 | ç±» | 方法 | æè¿° | | -------- | -------- | -------- | | HiLog | int Debug(const HiLogLabel &label, const char \*fmt, ...) | 功能:输出 debug 级别日志。<br/>è¾“å…¥å‚æ•°ï¼š<br/>- labelï¼šç”¨äºŽæ ‡è¯†è¾“å‡ºæ—¥å¿—çš„ç±»åž‹ã€ä¸šåŠ¡é¢†åŸŸã€TAG。<br/>- formatï¼šå¸¸é‡æ ¼å¼å—符串,包å«å‚数类型ã€éšç§æ ‡è¯†ã€‚æœªåŠ éšç§æ ‡è¯†çš„缺çœä¸ºéšç§å‚数。<br/>- fmtï¼šæ ¼å¼åŒ–å˜å‚æè¿°å—符串。<br/>è¾“å‡ºå‚æ•°ï¼šæ— <br/>返回值:大于ç‰äºŽ0,æˆåŠŸï¼›å°äºŽ0,失败。 | | | int Info(const HiLogLabel &label, const char \*fmt, ...) | 功能:输出 info 级别日志。<br/>傿•°è¯´æ˜ŽåŒ Debug 接å£ã€‚ | | | int Warn(const HiLogLabel &label, const char \*fmt, ...) | 功能:输出 warn 级别日志。<br/>傿•°è¯´æ˜ŽåŒ Debug 接å£ã€‚ | | | int Error(const HiLogLabel &label, const char \*fmt, ...) | 功能:输出 error 级别日志。<br/>傿•°è¯´æ˜ŽåŒ Debug 接å£ã€‚ | | | int Fatal(const HiLogLabel &label, const char \*fmt, ...) | 功能:输出 fatal 级别日志。<br/>傿•°è¯´æ˜ŽåŒ Debug 接å£ã€‚ | | | boolean IsLoggable(unsigned int domain, const char \*tag, LogLevel level) | 功能:检查指定业务领域ã€TAGã€çº§åˆ«çš„æ—¥å¿—是å¦å¯ä»¥æ‰“å°ã€‚<br/>è¾“å…¥å‚æ•°ï¼š<br/>- domain:指定日志业务领域。<br/>- tag: 指定日志TAG。<br/>- level: 指定日志level。<br/>è¾“å‡ºå‚æ•°ï¼šæ— <br/>返回值:如果指定domainã€tagã€level日志å¯ä»¥æ‰“å°åˆ™è¿”回trueï¼›å¦åˆ™è¿”回false。 | | HiLogLabel | struct HiLogLabel | 功能:åˆå§‹åŒ–æ—¥å¿—æ ‡ç¾å‚数。<br/>æˆå‘˜å‚数:<br/>- type: 指定日志type。<br/>- domain:指定日志业务领域。<br/>- tag: 指定日志TAG。 | ## å¼€å‘实例 ### C使用示例 1. 在.cæºæ–‡ä»¶ä¸ï¼ŒåŒ…å«hilog头文件: ``` #include "hilog/log.h" ``` 定义domainã€tag: ``` #undef LOG_DOMAIN #undef LOG_TAG #define LOG_DOMAIN 0xD003200 // æ ‡è¯†ä¸šåŠ¡é¢†åŸŸï¼ŒèŒƒå›´0xD000000~0xD0FFFFF #define LOG_TAG "MY_TAG" ``` æ‰“å°æ—¥å¿—: ``` HILOG_INFO(LOG_CORE, "Failed to visit %{private}s, reason:%{public}d.", url, errno); ``` 2. 编译设置,在BUILD.gné‡Œå¢žåŠ å系统SDKä¾èµ–: ``` external_deps = [ "hilog:libhilog" ] ``` ### C++使用示例 1. 在.h类定义头文件ä¸ï¼ŒåŒ…å«hilog头文件: ``` #include "hilog/log.h" ``` 如果类头文件ä¸éœ€è¦æ—¥å¿—打å°ï¼Œåœ¨å¤´æ–‡ä»¶ä¸ç±»å®šä¹‰èµ·å§‹å¤„ 定义 LABEL: ``` class MyClass { static constexpr OHOS::HiviewDFX::HiLogLabel LABEL = {LOG_CORE, 0xD003200, "MY_TAG"}; ...... } ``` å¦‚æžœç±»å¤´æ–‡ä»¶ä¸æ²¡æœ‰æ—¥å¿—打å°ï¼Œåœ¨ç±»å®žçŽ°æ–‡ä»¶ä¸ å®šä¹‰ LABEL: ``` using namespace OHOS::HiviewDFX; static constexpr HiLogLabel LABEL = {LOG_CORE, 0xD003200, "MY_TAG"}; ``` æ‰“å°æ—¥å¿—: ``` HiLog::Info(LABEL, "Failed to visit %{private}s, reason:%{public}d.", url, errno); ``` 2. 编译设置,在BUILD.gné‡Œå¢žåŠ å系统SDKä¾èµ–: ``` external_deps = [ "hiviewdfx:libhilog" ] ```