1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/openharmony-hiviewdfx_hilog_lite

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Hilog_lite

Введение

Hilog_lite предоставляет функцию журналирования подсистемы DFX для мини- и малых систем.

Структура директорий

Таблица 1 Структура директорий для Hilog_lite в подсистеме DFX

Директория

Описание

interfaces/native/kits/hilog

Определяет внешние API, предоставляющие функцию логирования для небольшой системы.

interfaces/native/kits/hilog_lite

Определяет внешние API, предоставляющие функцию логирования для мини-системы.

services/hilogcat

Позволяет просматривать журналы событий системы.

Содержит службы и команды, связанные с логированием для мини-системы.

services/apphilogcat

Предоставляет службу очистки журнала для мини-системы.

command

Предоставляет команды запроса журналов для мини-системы.

frameworks/featured

Реализует API, предоставляющие функцию журнала для мини-системы.

frameworks/mini

Реализует API, предоставляющие возможность использования журнала для мини-системы.

ОграниченияОбщая реализация минисистем основана на библиотеке стандартов C.

Логическая функция для минисистемы

  • Чтобы добавить модуль (например, модуль A) и выводить логи, выполните следующие шаги:
    1. Добавьте идентификатор модуля.

      Добавьте HILOG_MODULE_A в base/hiviewdfx/interfaces/hilog_lite/interfaces/native/kits/hilog_lite.

      typedef enum {
          /** DFX */
          HILOG_MODULE_HIVIEW = 0,
          /** Модуль системы A */
          HILOG_MODULE_A,
          /** Максимальное количество модулей */
          HILOG_MODULE_MAX
      } HiLogModuleType;
    2. Зарегистрируйте модуль.

      Добавьте следующий код в процесс инициализации модуля A для его регистрации с системой логирования:

      HiLogRegisterModule(HILOG_MODULE_A, "A");
    3. Измените статическую конфигурацию фреймворка DFX.

      Измените g_hiviewConfig в следующем файле по необходимости. По умолчанию изменения не требуются, а логи выводятся на последовательный порт.``` utils/lite/hiview_config.c


<a name="td247e4651b964f66b48433481b4d4ec3"></a>

<table>
<thead align="left">
<tr id="r2d18b74da660408380d46a6048a9e8be">
<th class="cellrowborder" valign="top" width="25.180000000000003%" id="mcps1.1.3.1.1">
<p id="a3d342605963b49f0bbc054a45a0f6c33">
<a name="a3d342605963b49f0bbc054a45a0f6c33"></a>
<a name="a3d342605963b49f0bbc054a45a0f6c33"></a>Параметр конфигурации</p>
</th>
<th class="cellrowborder" valign="top" width="74.82%" id="mcps1.1.3.1.2">
<p id="a40c1ea12a15d43d6b53412f1db99cf3d">
<a name="a40c1ea12a15d43d6b53412f1db99cf3d"></a>
<a name="a40c1ea12a15d43d6b53412f1db99cf3d"></a>Описание</p>
</th>
</tr>
</thead>
<tbody>
<tr id="re41b7052898d4451a271af54fc0444c9">
<td class="cellrowborder" valign="top" width="25.180000000000003%" headers="mcps1.1.3.1.1 ">
<p id="ade652f31f1924b89a6043e0d8f2e2f8e">
<a name="ade652f31f1924b89a6043e0d8f2e2f8e"></a>
<a name="ade652f31f1924b89a6043e0d8f2e2f8e"></a>outputOption</p>
</td>
<td class="cellrowborder" valign="top" width="74.82%" headers="mcps1.1.3.1.2 ">
<p id="a831cff5b5e4640bba83434a0eb26c2e8">
<a name="a831cff5b5e4640bba83434a0eb26c2e8"></a>
<a name="a831cff5b5e4640bba83434a0eb26c2e8"></a>Режим вывода логов. Возможные значения:</p>
<ul id="ul11276181319272">
<li><strong id="b1027691316279">OUTPUT_OPTION_DEBUG</strong>: Логи выводятся непосредственно в последовательный порт без расписания задач. Это значение используется только для временного отладочного режима.</li>
</ul>
<ul id="ul659914264273">
<li><strong id="b1359818268279">OUTPUT_OPTION_FLOW</strong> (значение по умолчанию): Логи выводятся как поток данных в последовательный порт.</li>
</ul>
</td>
</tr>
</tbody>
</table><tr>
<td class="cellrowborder" valign="top" width="25.180000000000003%" headers="mcps1.1.3.1.1">
<p id="a0930c997c3724317a1de154038668048">
<a name="a0930c997c3724317a1de154038668048"></a>
Уровень лога вывода
</p>
</td>
<td class="cellrowborder" valign="top" width="74.82%">
<p id="a60b30c4ddebf41e895ef4eacb832629d">
<a name="a60b30c4ddebf41e895ef4eacb832629d"></a>
Уровень лога для вывода. Только те логи, чьи уровни выше или равны указанному в этом параметре, могут быть выведены. Возможные значения: <strong id="en-us_topic_0000001051742157_b388817225412">HILOG_LV_DEBUG</strong>, <strong id="en-us_topic_0000001051742157_b1010817302414">HILOG_LV_INFO</strong>, <strong id="en-us_topic_0000001051742157_b1888283212411">HILOG_LV_WARN</strong>, <strong id="en-us_topic_0000001051742157_b863582564112">HILOG_LV_ERROR</strong>, или <strong id="en-us_topic_0000001051742157_b108501827164112">HILOG_LV_FATAL</strong>.
</p>
</td>
</tr>
<tr id="r6b11c6bf7a0b4937a663ef5ec344ab50">
<td class="cellrowborder" valign="top" width="25.180000000000003%">
<p id="aad1cbc77fa614e36a2481198278ad2d4">
<a name="aad1cbc77fa614e36a2481198278ad2d4"></a>
Переключатель лога
</p>
</td>
<td class="cellrowborder" valign="top" width="74.82%">
<p id="ad714e073f17e4f33b5843c01de0a9c87">
<a name="ad714e073f17e4f33b5843c01de0a9c87"></a>
Переключатель лога. Даже если этот переключатель отключен до компиляции, модуль HiLog может успешно инициализироваться. По умолчанию этот переключатель включен.
</p>
</td>
</tr>

<ul id="ul283283282711">
<li><strong id="b18831133217271">OUTPUT_OPTION_TEXT_FILE</strong>: Логи выводятся в виде текстовых файлов.</li>
</ul>```Значение может быть <strong id="en-us_topic_0000001051742157_b860151584911"><a name="en-us_topic_0000001051742157_b860151584911"></a><a name="en-us_topic_0000001051742157_b860151584911"></a>HIVIEW_FEATURE_ON</strong> или <strong id="en-us_topic_0000001051742157_b63541819493"><a name="en-us_topic_0000001051742157_b63541819493"></a><a name="en-us_topic_0000001051742157_b63541819493"></a>HIVIEW_FEATURE_OFF</strong>.```

HIVIEW_FEATURE_ON и HIVIEW_FEATURE_OFF остаются без изменений согласно правилам перевода.</p>
</td>
</tr>
<tr id="ra276f7f5a7cb4a0b8449047b5cdff658">
<td class="cellrowborder" valign="top" width="25.180000000000003%" headers="mcps1.1.3.1.1">
<p id="ac47f6a11699c401090b9c7b8fdffff30"><a name="ac47f6a11699c401090b9c7b8fdffff30"></a><a name="ac47f6a11699c401090b9c7b8fdffff30"></a>eventSwitch</p>
</td>
<td class="cellrowborder" valign="top" width="74.82%" headers="mcps1.1.3.1.2">
<p id="a45b2e86aed4848d18c2faaa8c22c6bd3"><a name="a45b2e86aed4848d18c2faaa8c22c6bd3"></a><a name="a45b2e86aed4848d18c2faaa8c22c6bd3"></a>Переключатель вывода событий. Если этот переключатель выключен до компиляции, модуль HiEvent не будет инициализирован. По умолчанию этот переключатель выключен. Значение может быть <strong id="en-us_topic_0000001051742157_b1139516363532"><a name="en-us_topic_0000001051742157_b1139516363532"></a><a name="en-us_topic_0000001051742157_b1139516363532"></a>HIVIEW_FEATURE_ON</strong> или <strong id="en-us_topic_0000001051742157_b16939113816534"><a name="en-us_topic_0000001051742157_b16939113816534"></a><a name="en-us_topic_0000001051742157_b16939113816534"></a>HIVIEW_FEATURE_OFF</strong>.</p>
</td>
</tr>Значение может быть <strong id="en-us_topic_0000001051742157_b146761815543"><a name="en-us_topic_0000001051742157_b146761815543"></a><a name="en-us_topic_0000001051742157_b146761815543"></a>HIVIEW_FEATURE_ON</strong> или <strong id="en-us_topic_0000001051742157_b1816422311548"><a name="en-us_topic_0000001051742157_b1816422311548"></a><a name="en-us_topic_0000001051742157_b1816422311548"></a>HIVIEW_FEATURE_OFF</strong>.

2. **Печать логов.**        Включите  **\#include "log.h"**  в файл  **.c**, где требуется вывод логов. Вызовите следующий API:

        HILOG\_INFO(HILOG\_MODULE\_A, "лог тест: %d", 88);        Ниже приведена таблица, описывающая параметры в API.         <a name="tb0e7329d09184f109c0cae274325b2f1"></a>
          <table><thead align="left"><tr id="r74cdd06495cb4915ad894e023deff4b2"><th class="cellrowborder" valign="top" width="11.57%" id="mcps1.1.5.1.1"><p id="a8cfadf9da95144fd8a9eb9dbd1362b89"><a name="a8cfadf9da95144fd8a9eb9dbd1362b89"></a><a name="a8cfadf9da95144fd8a9eb9dbd1362b89"></a>Параметр</p></th>
          <th class="cellrowborder" valign="top" width="11.83%" id="mcps1.1.5.1.2"><p id="afa5ef86b0da84d6db423e3026452c36e"><a name="afa5ef86b0da84d6db423e3026452c36e"></a><a name="afa5ef86b0da84d6db423e3026452c36e"></a>Обязательный</p></th>
          <th class="cellrowborder" valign="top" width="15.21%" id="mcps1.1.5.1.3"><p id="a9af4eafce7f64e28b91d13840b0ebcbe"><a name="a9af4eafce7f64e28b91d13840b0ebcbe"></a><a name="a9af4eafce7f64e28b91d13840b0ebcbe"></a>Тип данных</p></th>
          <th class="cellrowborder" valign="top" width="61.39%" id="mcps1.1.5.1.4"><p id="abeeb3a23760d45939183b063ebd23980"><a name="abeeb3a23760d45939183b063ebd23980"></a><a name="abeeb3a23760d45939183b063ebd23980"></a>Описание</p></th>
          </tr>
          </thead>
          <tbody><tr id="r7e6639aad87e416ab86b866f8e41f99e"><td class="cellrowborder" valign="top" width="11.57%" headers="mcps1.1.5.1.1 "><p id="a2e815fd48b364454993f15e71fe77098"><a name="a2e815fd48b364454993f15e71fe77098"></a><a name="a2e815fd48b364454993f15e71fe77098"></a>mod</p></td>
          <td class="cellrowborder" valign="top" width="11.83%" headers="mcps1.1.5.1.2 "><p id="a69360b58343843629f44854149aedac6"><a name="a69360b58343843629f44854149aedac6"></a><a name="a69360b58343843629f44854149aedac6"></a>Да</p></td>
          <td class="cellrowborder" valign="top" width="15.21%" headers="mcps1.1.5.1.3 "><p id="a73824d7214b945baa2e8ed3cfc8ec3d2"><a name="a73824d7214b945baa2e8ed3cfc8ec3d2"></a><a name="a73824d7214b945baa2e8ed3cfc8ec3d2"></a>uint8</p></td>
          <td class="cellrowborder" valign="top" width="61.39%" headers="mcps1.1.5.1.4 "><p id="a306257d426c040ebb352413f0ad22730"><a name="a306257d426c040ebb352413f0ad22730"></a><a name="a306257d426c040ebb352413f0ad22730"></a>ID модуля или службы.</p></td>
          </tr>
          </tbody>
          </table>         <p id="ac6cda7a8fb154e08bb81c97c329c12e6"><a name="ac6cda7a8fb154e08bb81c97c329c12e6"></a><a name="ac6cda7a8fb154e08bb81c97c329c12e6"></a>ID планируются и выделяются в единой системе. Поддерживается максимум 64 ID.</p>
          </td>
          </tr>
          </tbody>
          </table>Программы сторонних разработчиков используют **HILOG_MODULE_APP** в качестве идентификатора модуля.| Параметр | Обязательность | Тип данных | Описание |
| --- | --- | --- | --- |
| fmt | Да | char* | Форматирующий спецификатор для вывода. |
|   |   |   | 1. Поддерживается максимум шесть переменных параметров. `%s` не поддерживается. |
|   |   |   | 2. Максимальная длина форматированной записи журнала составляет 128 байт. При превышении максимальной длины новые журналы не могут быть выведены. |

Переменные параметры```markdown
2 "><p id="aa5fbcb8d1d8742a39ee76b96ef6d4d56"><a name="aa5fbcb8d1d8742a39ee76b96ef6d4d56"></a><a name="aa5fbcb8d1d8742a39ee76b96ef6d4d56"></a>Нет</p>
         </td>
         <td class="cellrowborder" valign="top" width="15. 21%" headers="mcps1. 1. 5. 1. 3 "><p id="a6f4d9ca5beaa4e8187e6b50d478af7eb"><a name="a6f4d9ca5beaa4e8187e6b50d478af7eb"></a><a name="a6f4d9ca5beaa4e8187e6b50d478af7eb"></a>int32</p>
         </td>
         <td class="cellrowborder" valign="top" width="61. 39%" headers="mcps1. 1. 5. 1. 4 "><p id="a7ebc1ecb043044d08dba95031abc5700"><a name="a7ebc1ecb043044d08dba95031abc5700"></a><a name="a7ebc1ecb043044d08dba95031abc5700"></a>Переменные параметры. Поддерживаются только числовые типы данных. Разрешено максимум шесть переменных параметров.</p>
         </td>
         </tr>
         </tbody>
         </table>
```## Маленькая система<a name="s33e0a62bc1dd4a2a9578fc22bd023f11"></a>

**Исходные API C и C++**

Доступные HiLog API включают следующее:

```cpp
HILOG_DEBUG(тип, ...)
HILOG_INFO(тип, ...)
HILOG_WARN(тип, ...)
HILOG_ERROR(тип, ...)
HILOG_FATAL(тип, ...)

Руководство по использованию:

  1. Определите тег лога.

  2. Выполните локальное отладочное тестирование. (Можно использовать доменное значение 0.)

  3. Включите заголовочный файл с помощью #include <hilog/log.h>.4. Добавьте зависимую библиотеку libhilog в BUILD.gn.

Правила использования API:

  1. Указатель формата по умолчанию является публичным, например, HILOGI("Привет мир\n"); >> Привет мир.

  2. Отформатированный параметр по умолчанию является приватным, например, HILOGI("Возраст равен %d\n", 10); >> Возраст равен <приватно>.

  3. Параметры, помеченные как %{private}, являются приватными данными, например, HILOGI("Возраст равен %{private}d\n", 10); >> Возраст равен <приватно>.

  4. Параметры, помеченные как %{public}, являются публичными данными, например, HILOGI("Возраст равен %{public}d\n", 10); >> Возраст равен 10.Описание параметров

Параметр

Описание

domain

ID домена

tag

Метка журнала

isFmtPrivate

Значение yes указывает, что спецификатор формата является приватным.

fmt

Форматирующий спецификатор

args

Аргументы для отображения с использованием форматирующего спецификатора

Просмотр журнала1. Перейдите в директорию /storage/data/log/ для просмотра журналов hilog, сгенерированных во время отладки.

  1. Выполните команду hilogcat, чтобы просматривать журналы hilog в реальном времени.

Архитектура системы журналирования

  1. hilogtask: задача журналирования в ядре

    • Это задача или поток ядра Linux, которая инициализируется при запуске системы.
    • Когда модуль в ядре вызывает API журналирования, форматированный контент журнала передается задаче и хранится в циклическом буфере (ringbuffer).
    • При вызове API журналирования в пространстве пользователя форматированный контент журнала записывается в узел драйвера путем вызова ioctl. Узел драйвера затем отправляет контент журнала в hilogtask, а hilogtask сохраняет контент журнала в циклическом буфере.
  2. hilogcatd: хранилище журналов в пространстве пользователя

    • Это процесс в пространстве пользователя. Он периодически читает содержимое журнала из циклического буфера и сохраняет его в файл журнала.
    • Файлы журналов могут быть сжаты в формате gzip с помощью zlib.
    • Размер одного файла и количество файлов можно настроить при компиляции.
  3. hilogcat: консольный инструмент для просмотра журналов

    Этот инструмент считывает содержимое журнала из циклического буфера через API драйвера ядра и выводит его в stdout.4. ringbuffer: настраиваемый буфер для журналов

    • Размер циклического буфера можно настроить при компиляции.

Вовлечённые репозитории

Подсистема DFX

hiviewdfx_hilog_lite

hiviewdfx_hiview_lite

hiviewdfx_hievent_lite

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления (1)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/openharmony-hiviewdfx_hilog_lite.git
git@api.gitlife.ru:oschina-mirror/openharmony-hiviewdfx_hilog_lite.git
oschina-mirror
openharmony-hiviewdfx_hilog_lite
openharmony-hiviewdfx_hilog_lite
master