OpenHarmony开发者论坛

标题: 【TOOLS使用】OpenHarmony hilog系列之(三) HILOG格式符号列表及应用举例(珍藏) [打印本页]

作者: 诚迈_雨哥    时间: 2024-6-1 15:17
标题: 【TOOLS使用】OpenHarmony hilog系列之(三) HILOG格式符号列表及应用举例(珍藏)
[md]# 一、HILOG格式符号列表及应用举例

| 序号 | 格式符          | 举例                                                                                                                                                                                                                                                                     | 输出                                                                                      |
| ---- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------- |
| 1    | %{public}#x     | uint32_t ep = 5678;<br>LOGI("Eeexample:Cannot set freq at ep %{public}#x\n", ep);<br>                                                                                                                                                                                    | Eeexample:Cannot set freq at ep 0x162e                                                    |
| 2    | %{public}02x    | uint16_t value1 = 256;<br>LOGI("Eeexample:packet filter %{public}02x\n", value1);<br>                                                                                                                                                                                    | Eeexample:packet filter 100                                                               |
| 3    | %{public}04x    | uint32_t value2 = 5678;<br>LOGI("Eeexample:[read]: regAttr->regValue=0x%{public}04x", value2);<br>                                                                                                                                                                       | Eeexample:[read]: regAttr->regValue=0x162e                                                |
| 4    | %{public}08x    | __u32 id = 1234;<br>LOGI("Eeexample:id=%{public}08x",id);<br>                                                                                                                                                                                                            | Eeexample:id=000004d2                                                                     |
| 5    | %{public}08zx   | size_t idx = 1234;<br>LOGI("Eeexample:MtdDumpBuf: 0x%{public}08zx", idx);<br>                                                                                                                                                                                            | Eeexample:MtdDumpBuf: 0x000004d2                                                          |
| 6    | %{public}0d     | int cmd = 706;<br>LOGI("Eeexample:I2cFsIoctl: not support cmd(%{public}0d)!!!", cmd);<br>                                                                                                                                                                                | Eeexample:I2cFsIoctl: not support cmd(706)!!!                                             |
| 7    | %{public}0lu    | unsigned long arg = 123456;<br>LOGI("Eeexample:I2cFsIoctl: not support arg(%{public}0lu)!!!", arg);<br>                                                                                                                                                                  | Eeexample:I2cFsIoctl: not support arg(123456)!!!                                          |
| 8    | %{public}0x     | uint32_t featureMap = 12345;<br>LOGI("Eeexample:%{public}s: featureMap=%{public}0x", `__func__`, featureMap);<br>uint8_t value3 = 123;<br>LOGI("Eeexample:%{public}s: i2c addr [%{public}0X] write failed", `__func__`, value3);<br>                                 | Eeexample:StartDrag: featureMap=3039<br>Eeexample:StartDrag: i2c addr [7B] write failed   |
| 9    | %{public}-14s   | __u8 name[32] = "v4l2 camera";<br>LOGI("Eeexample:%{public}-14s", name);<br>                                                                                                                                                                                             | Eeexample:v4l2 camera                                                                     |
| 10   | %{public}c      | uint8_t buf[8] = "abcdef";<br>LOGI("Eeexampleroduct_ID: %{public}c%{public}c%{public}c%{public}c", buf[0], buf[1], buf[2], buf[3]);<br>                                                                                                                                | Eeexampleroduct_ID: abcd                                                                |
| 11   | %{public}d      | int32_t status = -1;<br>LOGI("Eeexample:%{public}s: Dispatch USB_SERIAL_WRITE_SPEED failed status = %{public}d", `__func__`, status);<br>                                                                                                                              | Eeexample:StartDrag: Dispatch USB_SERIAL_WRITE_SPEED failed status = -1                   |
| 12   | %{public}f      | float w = 0.1234;<br>float h = 0.66;<br>LOGI("Eeexample: ratio w: %{public}f  ratio h: %{public}f", w, h);<br>                                                                                                                                                           | Eeexample: ratio w: 0.123400  ratio h: 0.660000                                           |
| 13   | %{public}hd     | int16_t busId = 12;<br>LOGI("Eeexample:I2cManagerAddCntlr: busId:%{public}hd exceed!", busId);<br>                                                                                                                                                                       | Eeexample:I2cManagerAddCntlr: busId:12 exceed!                                            |
| 14   | %{public}hhd    | ///uint16_t fontId = 123;<br>///LOGI("Eeexample:Text::SetFontId invalid fontId(%{public}hhd)", fontId);<br>                                                                                                                                                              |                                                                                           |
| 15   | %{public}hhu    | uint8_t status2 = 8;<br>LOGI("Eeexample:%{public}s: data status [%{public}hhu]", `__func__`, status2);                                                                                                                                                                 | Eeexample:StartDrag: data status [8]                                                      |
| 16   | %{public}hu     | uint16_t gpio = 123;<br>LOGI("Eeexample:%{public}s %{public}d, error gpio:%{public}hu", `__func__`, `__LINE__`, gpio);<br>                                                                                                                                           | Eeexample:StartDrag 227, error gpio:123                                                   |
| 17   | %{public}i      | uint32_t item = 123;<br>LOGI("Eeexample:chns = %{public}i\n", item);<br>                                                                                                                                                                                                 | Eeexample:chns = 123                                                                      |
| 18   | %{public}jd     | off_t addr1 = 123;<br>LOGI("Eeexample:MtdDeviceCheckMsg: not page aligned, addr=%{public}jd!",addr1);<br>                                                                                                                                                                | Eeexample:MtdDeviceCheckMsg: not page aligned, addr=123!                                  |
| 19   | %{public}jx     | off_t addr2 = 123;<br>LOGI("Eeexample:MtdDeviceWriteReadByPageUnlock: no enough space, addr=0x%{public}jx!", addr2);<br>                                                                                                                                                 | Eeexample:MtdDeviceWriteReadByPageUnlock: no enough space, addr=0x7b!                     |
| 20   | %{public}ld     | long int thread_id = atol("123");<br>LOGI("Eeexample:running thread id:%{public}ld start\n", thread_id);<br>                                                                                                                                                             | Eeexample:running thread id:123 start                                                     |
| 21   | %{public}u      | uint32_t spiPort = 123;<br>LOGI("Eeexample:spi %{public}u open error.\n", spiPort);<br>                                                                                                                                                                                  | Eeexample:spi 123 open error.                                                             |
| 21   | %{public}lf     | double timeUse = 0.12345;<br>LOGI("Eeexample:timeUse = %{public}lf,timeUse1= %{public}.1lf, timeUse2= %{public}.2lf\n", timeUse, timeUse, timeUse);<br>                                                                                                                  | Eeexample:timeUse = 0.123450,timeUse1= 0.1, timeUse2= 0.12                                |
| 22   | %{public}lld    | int64_t timeOffset = 123456789;<br>int64_t frameIndex_ = 987654321;<br>LOGI("Eeexample:Capture framIndex: %{public}lld, timeOffset: %{public}lld.", frameIndex_, timeOffset);<br>int32_t data = 256;<br>LOGI("Eeexample:tag value:%{public}lld", (long long)(data));<br> | Eeexample:Capture framIndex: 987654321, timeOffset: 123456789.<br>Eeexample:tag value:256 |
| 23   | %{public}llu    | uint64_t portDirection = 1024;<br>LOGI("Eeexample:Write response data portDirection=%{public}llu failed!", portDirection);<br>                                                                                                                                           | Eeexample:Write response data portDirection=1024 failed!                                  |
| 24   | %{public}llx    | uint64_t pid = 123;<br>LOGI("Eeexample:I3cDeviceAdd: device already existed!: 0x%{public}llx!", pid);<br>                                                                                                                                                                | Eeexample:I3cDeviceAdd: device already existed!: 0x7b!                                    |
| 25   | %{public}lu     | unsigned long size = 4096;<br> LOGI("Eeexample:hinand_read: size=%{public}lu!", size);<br>                                                                                                                                                                               | Eeexample:hinand_read: size=4096!                                                         |
| 26   | %{public}lx     | unsigned long action = 8;<br>LOGI("Eeexample:action=0x%{public}lx", action);<br>                                                                                                                                                                                         | Eeexample:action=0x8                                                                      |
| 27   | %{public}m      | --                                                                                                                                                                                                                                                                       | --                                                                                        |
| 28   | %{public}p      | uint8_t datum = 64;<br>uint8_t *data2 = &datum;<br>LOGI("Eeexample:data %{public}p.", data2);<br>                                                                                                                                                                        | Eeexample:data F767F4F3.                                                                  |
| 29   | %{public}PRId64 | const int64_t poolId = 777;<br>LOGI("Eeexample:can't get buffer pool, id = %{public}" PRId64 "", poolId);<br>int64_t appData = 888;<br>LOGI("Eeexample:appData[%{public}" PRId64 "]", appData);<br>                                                                      | Eeexample:can't get buffer pool, id = 777<br>Eeexample:appData[888]                       |
| 30   | %{public}PRIu64 | uint64_t id3 = 4096;<br> LOGI("Eeexample:bufferPool is nullptr id: %{public}" PRIu64 "", id3);<br>                                                                                                                                                                       | Eeexample:bufferPool is nullptr id: 4096                                                  |
| 31   | %{public}PRIx64 | uint64_t usage = 888;<br> LOGI("Eeexample:usage = 0x%{public}" PRIx64 "", usage);<br>                                                                                                                                                                                    | Eeexample:usage = 0x378                                                                   |
| 32   | %{public}s      | const char *tmp = "abcd";<br>LOGI("Eeexample:%{public}s",tmp);<br>                                                                                                                                                                                                       | Eeexample:abcd                                                                            |
| 33   | %{public}u      | uint8_t srcWidth = 8;<br>LOGI("EeexamplemacAlignedTransMax: srcwidth:%{public}u,!", srcWidth);<br>                                                                                                                                                                     | EeexamplemacAlignedTransMax: srcwidth:8,!                                               |
| 34   | %{public}x      | uint32_t addr3 = 256;<br>LOGI("Eeexample:Write err regAddr: 0x%{public}x.\n", addr3);<br>                                                                                                                                                                                | Eeexample:Write err regAddr: 0x100.                                                       |
| 35   | %{public}zd     | ssize_t ret = 256;<br>LOGI("Eeexample:write data %{public}zd less than.", ret);<br>                                                                                                                                                                                      | Eeexample:write data 256 less than.                                                       |
| 36   | %{public}zu     | size_t length = 256;<br>LOGI("Eeexample:write data less than %{public}zu.",  length);<br>                                                                                                                                                                                | Eeexample:write data less than 256.                                                       |
| 37   | `__func__`    | LOGI("Eeexample:%{public}s lseek file fail.",`__func__`);<br>                                                                                                                                                                                                          | Eeexample:StartDrag lseek file fail.                                                      |
| 38   | `__LINE__`    | LOGI("Eeexampleine:%{public}d.",`__LINE__`);<br>                                                                                                                                                                                                                     | Eeexampleine:303.                                                                       |
| 39   | %{public}ju     | --                                                                                                                                                                                                                                                                       | --                                                                                        |

# 二、日志打印的样例

初学者常用样例,建议备份到本地,参照修改。

```cpp
// 1 %{public}#x
uint32_t ep = 5678;
LOGI("Eeexample:Cannot set freq at ep %{public}#x\n", ep);
// 2 %{public}02x
uint16_t value1 = 256;
LOGI("Eeexample:packet filter %{public}02x\n", value1);
// 3 %{public}04x
uint32_t value2 = 5678;
LOGI("Eeexample:[read]: regAttr->regValue=0x%{public}04x", value2);
// 4 %{public}08x
__u32 id = 1234;
LOGI("Eeexample:id=%{public}08x",id);
// 5 %{public}08zx
size_t idx = 1234;
LOGI("Eeexample:MtdDumpBuf: 0x%{public}08zx", idx);
// 6 %{public}0d
int cmd = 706;
LOGI("Eeexample:I2cFsIoctl: not support cmd(%{public}0d)!!!", cmd);
// 7 %{public}0lu
unsigned long arg = 123456;
LOGI("Eeexample:I2cFsIoctl: not support arg(%{public}0lu)!!!", arg);
// 8 %{public}0x
uint32_t featureMap = 12345;
LOGI("Eeexample:%{public}s: featureMap=%{public}0x", __func__, featureMap);

uint8_t value3 = 123;
LOGI("Eeexample:%{public}s: i2c addr [%{public}0X] write failed", __func__, value3);
// 9 %{public}-14s
__u8 name[32] = "v4l2 camera";
LOGI("Eeexample:%{public}-14s", name);
// 10 %{public}c
uint8_t buf[8] = "abcdef";
LOGI("Eeexampleroduct_ID: %{public}c%{public}c%{public}c%{public}c", buf[0], buf[1], buf[2], buf[3]);
// 11 %{public}d
int32_t status = -1;
LOGI("Eeexample:%{public}s: Dispatch USB_SERIAL_WRITE_SPEED failed status = %{public}d", __func__, status);
// 12 %{public}f
float w = 0.1234;
float h = 0.66;
LOGI("Eeexample: ratio w: %{public}f  ratio h: %{public}f", w, h);
// 13 %{public}hd
int16_t busId = 12;
LOGI("Eeexample:I2cManagerAddCntlr: busId:%{public}hd exceed!", busId);
// 14 %{public}hhd
///uint16_t fontId = 123;
///LOGI("Eeexample:Text::SetFontId invalid fontId(%{public}hhd)", fontId);
// 15 %{public}hhu
uint8_t status2 = 8;
LOGI("Eeexample:%{public}s: data status [%{public}hhu]", __func__, status2);
// 16 %{public}hu
uint16_t gpio = 123;
LOGI("Eeexample:%{public}s %{public}d, error gpio:%{public}hu", __func__, __LINE__, gpio);
// 17 %{public}i
uint32_t item = 123;
LOGI("Eeexample:chns = %{public}i\n", item);
// 18 %{public}jd
off_t addr1 = 123;
LOGI("Eeexample:MtdDeviceCheckMsg: not page aligned, addr=%{public}jd!",addr1);
// 19 %{public}jx
off_t addr2 = 123;
LOGI("Eeexample:MtdDeviceWriteReadByPageUnlock: no enough space, addr=0x%{public}jx!", addr2);
// 20 %{public}ld
long int thread_id = atol("123");
LOGI("Eeexample:running thread id:%{public}ld start\n", thread_id);
// 21 %{public}u
uint32_t spiPort = 123;
LOGI("Eeexample:spi %{public}u open error.\n", spiPort);
// 21 %{public}lf
double timeUse = 0.12345;
LOGI("Eeexample:timeUse = %{public}lf,timeUse1= %{public}.1lf, timeUse2= %{public}.2lf\n", timeUse, timeUse, timeUse);
// 22 %{public}lld
int64_t timeOffset = 123456789;
int64_t frameIndex_ = 987654321;
LOGI("Eeexample:Capture framIndex: %{public}lld, timeOffset: %{public}lld.", frameIndex_, timeOffset);
int32_t data = 256;
LOGI("Eeexample:tag value:%{public}lld", (long long)(data));
// 23 %{public}llu
uint64_t portDirection = 1024;
LOGI("Eeexample:Write response data portDirection=%{public}llu failed!", portDirection);
// 24 %{public}llx
uint64_t pid = 123;
LOGI("Eeexample:I3cDeviceAdd: device already existed!: 0x%{public}llx!", pid);
// 25 %{public}lu
unsigned long size = 4096;
LOGI("Eeexample:hinand_read: size=%{public}lu!", size);
// 26 %{public}lx
unsigned long action = 8;
LOGI("Eeexample:action=0x%{public}lx", action);
// 27 %{public}m

// 28 %{public}p
uint8_t datum = 64;
uint8_t *data2 = &datum;
LOGI("Eeexample:data %{public}p.", data2);
// 29 %{public}PRId64
const int64_t poolId = 777;
LOGI("Eeexample:can't get buffer pool, id = %{public}" PRId64 "", poolId);

int64_t appData = 888;
LOGI("Eeexample:appData[%{public}" PRId64 "]", appData);
// 30 %{public}PRIu64
uint64_t id3 = 4096;
LOGI("Eeexample:bufferPool is nullptr id: %{public}" PRIu64 "", id3);
// 31 %{public}PRIx64
uint64_t usage = 888;
LOGI("Eeexample:usage = 0x%{public}" PRIx64 "", usage);
// 32 %{public}s
const char *tmp = "abcd";
LOGI("Eeexample:%{public}s",tmp);
// 33 %{public}u
uint8_t srcWidth = 8;
LOGI("EeexamplemacAlignedTransMax: srcwidth:%{public}u,!", srcWidth);
// 34 %{public}x
uint32_t addr3 = 256;
LOGI("Eeexample:Write err regAddr: 0x%{public}x.\n", addr3);
// 35 %{public}zd
ssize_t ret = 256;
LOGI("Eeexample:write data %{public}zd less than.", ret);
// 36 %{public}zu
size_t length = 256;
LOGI("Eeexample:write data less than %{public}zu.",  length);

// 37 __func__
LOGI("Eeexample:%{public}s lseek file fail.", __func__);
// 38 __LINE__
LOGI("Eeexampleine:%{public}d.", __LINE__);
// 39 %{public}ju
```

# 三、补充说明

## 1.日志格式符的说明

* 如果是用户态的日志,必须添加{public}才能被打印出来;
* 如果是内核态的日志,%后面直接跟格式符;

## 2. `__func__,__LINE__` 受到markdown 格式限制,使用时没有一撇

## 3. 很多子系统对LOG 都进行了二次封装,一定要使用封装后的函数

## 4. 日志等级的选择

// 日志定义了5个级别,优先级从低到高依次是:debug、info、warn、error、fatal。

| 级别          | 描述                                               |
| ------------- | -------------------------------------------------- |
| LOG_DEBUG = 3 | 输出DEBUG级别的日志,表示仅用于调试,默认不输出    |
| LOG_INFO = 4  | 输出INFO级别的日志,表示普通的信息,一般都会输出   |
| LOG_WARN = 5  | 输出WARN级别的日志,表示存在警告,满足级别才会输出 |
| LOG_ERROR = 6 | 输出ERROR级别的日志,表示存在错误,一定输出        |
| LOG_FATAL = 7 | 输出FATAL级别的日志,表示致命错误,一定输出        |

## 5. 千万不要在时钟、线程内不加限制地打印 INFO 日志,否则日志会爆屏

# 四、参考链接

* HiLog组件: https://gitee.com/openharmony/hiviewdfx_hilog
* 鸿蒙开发之资源文件与HiLog日志: https://huaweicloud.csdn.net/64dc8f5e4c7ead5211f11679.html
[/md]




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5