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

OSCHINA-MIRROR/openharmony-hiviewdfx_hilog

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_zh.md 43 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 06.03.2025 00:28 bbd50fc

Компонент HiLog

Обзор

HiLog — это система логов OpenHarmony, которая предоставляет возможность системным фреймворкам, службам и приложениям выводить логи, а также записывать действия пользователя и состояние системы.

Рисунок 1 Архитектурная схема HiLog

Архитектурная схема HiLog

Процесс в пространстве пользователя использует интерфейсы логов для записи содержимого логов в буфер hilogd. Инструмент hilog в пространстве пользователя позволяет выводить логи на консоль для просмотра, а также отправляет команды hilogd для записи логов на диск.

Основные задачи:

  • hilogd — это сервис постоянной работы для журналирования.1. Этот сервис запускается автоматически при старте системы в режиме разработки.
  1. Когда модуль в пространстве пользователя вызывает интерфейсы логов, он передает отформатированное содержимое логов этому сервису, который хранит его в циклическом буфер.

Предлагаю небольшие изменения для улучшения грамматики:

  1. Когда модуль в пространстве пользователя вызывает интерфейсы логов, он передает отформатированное содержимое логов этому сервису, который хранит его в циклическом буфере.- hilog — инструмент для просмотра логов через командную строку.

  2. Читает содержимое циклического буфера из hilogd и выводит его на стандартный поток вывода, поддерживая фильтрацию логов.

Поддерживаемые возможности:

  • Поддерживает форматирование параметров с приватными метками (подробнее см. пример ниже).
  • Поддерживает управление потоками для процессов, выдающих превышающие норму логи.
  • Поддерживает управление потоками для доменов, выдающих превышающие норму логи.
  • Поддерживает сжатие потока при записи на диск.

Содержание

/base/hiviewdfx/hilog
├── frameworks           # Код фреймворков
│   └── native           # Реализация HiLog native
├── interfaces           # Интерфейсы
│   └── native           # Внешние C/C++ интерфейсы
│       └── innerkits    # Головные файлы для внутренних подсистем
│       └── kits         # Головные файлы для приложений
│   └── js               # Внешние JS интерфейсы
├── services
│   └── hilogd           # Реализация сервиса постоянной работы для логов
│   └── hilogtool        # Реализация инструмента для логов

Ограничения

Зависит от компилятора Clang версии (Clang 8.0.0) и выше.

Описание

1. Вывод логов и отображение

Интерфейсы JS: https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-performance-analysis-kit/js-apis-hilog.mdИнтерфейсы NDK: https://gitee.com/openharmony/docs/blob/master/ru-cn/application-dev/dfx/hilog-guidelines-ndk.md

Формат вывода логов:

Дата Время PID TID Уровень лога domainID/Метка лога: Содержание лога

Пример ниже показывает запись уровня INFO с domainID 0x3200 и меткой "testTag":

04-19 17:02:14.735  5394  5394 I A00032/testTag: Это сообщение уровня INFO в hilog

Объяснение:

  • Уровень лога: I указывает на уровень Info, остальные уровни указаны по первой букве.
  • domainID: A003200, где A означает приложение, а 3200 — это значение domainID 0x3200. Подробное описание domainID см. в руководстве по интерфейсу.

2. Настройка логов

(1) Уровни логов

Описание: Уровни логов должны соответствовать реальному уровню содержимого логов. Объяснение уровней логов:

FATAL: Критическая катастрофа, указывающая на то, что программа или функционал скоро прекратят работу, и восстановление невозможно.

ERROR: Программа или функционал столкнулись с ошибкой, которая влияет на нормальное выполнение функционала или использование пользователями, хотя восстановление возможно, но требует значительных усилий, таких как переустановка данных.

WARN: Произошло серьезное непредвиденное событие, которое мало влияет на пользователя, и программу можно автоматически восстановить или восстановить через простое действие.INFO: Используется для записи ключевых этапов бизнес-процессов, чтобы воспроизвести основной процесс работы; используется для регистрации информации о ненормальных ситуациях, которые могут быть предсказаны (например, отсутствие сети, неудачная авторизация и т.д.). Эти логи должны быть записаны доминирующими модулями бизнеса, чтобы избежать повторной записи в нескольких вызываемых модулях или низкоуровневых функциях.DEBUG: Более детальная запись процесса, чем INFO, позволяющая более подробно анализировать бизнес-процесс и находить проблемы. Логи уровня DEBUG по умолчанию не печатаются в выпусках, кроме отладочных версий или когда включены отладочные переключатели.

Настройка уровня логов: По умолчанию уровень логов установлен на INFO, его можно изменить командой.

Команда чтения уровня логов:

param get hilog.loggable.global

Установка уровня журналирования:

hilog -b W # Устанавливает глобальный уровень журналирования на WARN.
hilog -b D -T testTag # Устанавливает уровень журналирования для метки "testTag" на DEBUG.
hilog -b D -D 0x3200 # Устанавливает уровень журналирования для домена с ID 0x3200 на DEBUG.

Примечание: Недопустимо устанавливать глобальный уровень журналирования на DEBUG, так как это может привести к перегрузке IPC-канала из-за большого объема системных сообщений уровня DEBUG.

(2) Механизм ограничения количества логов

Цель: Предотвратить снижение производительности приложения и ошибки печати из-за слишком больших объемов данных в логах. Для этого используется механизм ограничения количества логов, который по умолчанию отключен для приложений уровня DEBUG.

Контроль уровня процесса: Каждый процесс ограничен максимальным количеством логов в секунду — 50КБ. При превышении этого значения логи не будут выводиться, а вместо этого будет выведено предупреждение о превышении лимита.Закрытие механизма ограничения для конкретного процесса:

hilog -Q pidoff

Пример предупреждения о превышении лимита:

04-19 17:02:34.219  5394  5394 W A00032/LOGLIMIT: ==com.example.myapplication LOGS OVER PROC QUOTA, 3091 DROPPED==

Объяснение: Этот лог указывает, что процесс с PID 5394 превысил лимит логов в 17:02:34, и было пропущено 3091 запись.

(3) Механизм защиты конфиденциальности

Цель: Защита конфиденциальной информации путём её замены на специальное значение "". По умолчанию этот механизм отключён для приложений уровня DEBUG.

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

OH_LOG_ERROR(LOG_APP, "%s failed to visit %{private}s, reason:%{public}d.", name, url, errno);

Результат:

12-11 12:21:47.579 2695 2695 E A03200/MY_TAG: <private> failed to visit <private>, reason:11.

Параметры name и url, если они не начинаются с %{public}, будут заменены на <private>.

(4) Механизм записи логов на диск

Используйте команду hilog для записи логов из буфера на диск в директорию /data/log/hilog.

Команда записи логов на диск: // Без дополнительных параметров количество файлов равно 10, размер каждого файла — 4МБ.

hilog -w start

// Расширенные параметры: -n для установки количества файлов до 1000, -l для установки размера каждого файла от 64.0КБ до 512.0МБ. // Запуск записи логов на диск с размером 8МБ и количеством файлов 100.

hilog -w start -l 8M -n 100

Команда проверки задачи записи логов:

hilog -w query

Остановка записи логов в файл:

hilog -w stop
```**Формат имени файла с записанными логами**

Имя файла с записанными логами: hilog.000.20170805-170154.gz hilog_kmsg.000.20170805-170430.gz

Объяснение: "hilog" указывает на тип логов; для обычных логов используется "hilog", а для kmsg логов — "hilog_kmsg"; 000 представляет собой индекс файла логов, диапазон значений [0, 999]; если индекс превышает 999, он циклически обнуляется, максимальное количество сохраняемых файлов логов равно 1000; 20170805-170154 указывает время начала записи логов.

#### (5) Механизм отсечения вывода логов
Максимальная длина одного сообщения лога hilog составляет примерно 3500 байт. При превышении этой длины сообщение будет отсекаться и выводиться частями. Для длинных сообщений можно использовать несколько частей для вывода.### 3. Часто используемые команды для работы с логами <a name="section129654513264"></a>

(1) Описание параметров командной строки для команды `hilog`

| Краткий вариант | Полный вариант | Параметр | Описание |
|------------------|----------------|----------|-------------------------------------|
| `-h`             | `--help`       |          | Вывод справочной информации         |
| По умолчанию      | По умолчанию   |          | Блокирующее чтение логов, не завершается |
| `-x`             | `--exit`       |          | Неблокирующее чтение логов, завершается после окончания |

|     -g                                                                                        |                    |                                                                                                                                      |     Получение размера буфера, используется вместе с -t для указания типа; по умолчанию app и core            ||
|     -G                                                                                       |     --buffer-size   |     \<size>                                                                                                                         |     Устанавливает размер буфера для указанного типа логов; используется вместе с -t для конкретного типа; по умолчанию app и core; можно использовать B/K/M/G как единицы |
|     -r                                                                                       |                      |                                                                                                                                       |     Очищает логи буфера, используется вместе с -t для конкретного типа; по умолчанию app и core              |
|     -p                                                                                       |     --privacy       |     <on/off>                                                                                                                        |     Поддерживает управление переключателем приватности в режиме отладки системы                                                             |
|                                                                                              |                      |     on                                                                                                                               |     Включает переключатель приватности, показывает \<private>                                                                              ||                                                                                              |                      |     off                                                                                                                               |     Отключает переключатель приватности, показывает открытый текст                                                                        |
|                                                                                              |                      |     on                                                                                                                                |     Включает переключатель приватности, скрывает открытый текст                                                                          |
|     -k                                                                                       |                      |     <on/off>                                                                                                                          |     Управляет переключателем чтения логов ядра                                                                                            |
|                                                                                              |                      |     on                                                                                                                                |     Включает чтение логов ядра                                                                              |
|                                                                                              |                      |     off                                                                                                                               |     Отключает чтение логов ядра                                                                              |
|     -s                                                                                       |     --statistics     |                                                                                                                                       |     Получает статистическую информацию, использовать вместе с -t или -D                                                                   ||     -S                                                                                        |                      |                                                                                                                                       |     Очистить статистическую информацию, использовать вместе с -t или -D                                   |
|     -Q                                                                                        |                      |     <control-type>                                                                                                                    |     Управление режимами контроля пропускной способности                                                   |
|                                                                                            |                      |     pidon                                                                                                                             |     Включить контроль пропускной способности для процессов                                                |
|                                                                                            |                      |     pidoff                                                                                                                            |     Отключить контроль пропускной способности для процессов                                               |
|                                                                                            |                      |     domainon                                                                                                                          |     Включить контроль пропускной способности для домена                                                   |
|                                                                                            |                      |     domainoff                                                                                                                         |     Отключить контроль пропускной способности для домена                                                  | |     -L                                                                                       |     --level          |     \<level>                                                                                                                          |     Указать уровень лога, пример: -L D/I/W/E/S                                                                |
  |     -t                                                                                       |     --type           |     \<type>                                                                                                                           |     Указать тип лога, пример: -t app core init                                                                |
  |     -D                                                                                       |     --domain         |     \<domain>                                                                                                                         |     Указать домен                                                                                        ||
  |     -T                                                                                       |     --tag            |     \<tag>                                                                                                                            |     Указать тег                                                                                          |
  |     -a                                                                                       |     --head           |     \<n>                                                                                                                               |     Отображать только первые \<n> строк лога                                                                |
  |     -z                                                                                       |     --tail           |     \<n>                                                                                                                               |     Отображать только последние \<n> строк лога                                                              ||     -P                                                                                        |     --pid            |     \<pid>                                                                                                                             |     Определяет различные PID                                                                                 |
|     -e                                                                                        |     --regex          |     \<expr>                                                                                                                            |     Выводит только строки лога, соответствующие регулярному выражению \<expr>, где \<expr> — это регулярное выражение |
|     -f                                                                                        |     --filename       |     \<filename>                                                                                                                        |     Устанавливает имя файла для записи                                                                       |
|     -l                                                                                        |     --length         |     \<length>                                                                                                                          |     Устанавливает размер файла при записи на диск, должен быть больше или равен 64 КБ                                                                      |
|     -n                                                                                        |     --number         |     \<number>                                                                                                                          |     Устанавливает количество записываемых файлов                                                                                       | |     -j                                                                                       |     --jobid          |     \<jobid>                                                                                                                          |     Устанавливает ID задачи записи на диск                                                                                            |
  |     -w                                                                                       |     --write          |     \<control>                                                                                                                        |     Контроль задачи записи на диск                                                                                                     |
  |                                                                                              |                      |     query                                                                                                                            |     Выполняет запрос к задаче записи на диск                                                                                           |
  |                                                                                              |                      |     start                                                                                                                            |     Начинает задачу записи на диск; параметры командной строки включают имя файла, размер одного файла, алгоритм записи, количество rotate файлов.   ||
  |                                                                                              |                      |     stop                                                                                                                             |     Операция записи на диск остановлена                                                                                               ||     -m                                                                                        |     --stream          |     \<algorithm>                                                                                                                      |     Управление способом записи на диск                                                                         |
|                                                                                                |                      |     none                                                                                                                             |     Без сжатия запись на диск                                                                                  |
|                                                                                                |                      |     zlib                                                                                                                             |     Запись на диск с использованием алгоритма сжатия zlib, выходной файл имеет расширение .gz              |
|                                                                                                |                      |     zstd                                                                                                                             |     Запись на диск с использованием алгоритма сжатия zstd, выходной файл имеет расширение .zst             |
|     -v                                                                                        |     --format          |     \<format>                                                                                                                         |                                                                                                              ||
|                                                                                                |                      |     time                                                                                                                             |     Отображение локального времени                                                                              ||                                                                                              |                      |     color                                                                                                                             |     Отображение различных уровней в разных цветах; обработка отсутствующих уровней с помощью черно-белого режима                    |
|                                                                                              |                      |     epoch                                                                                                                             |     Отображение относительного времени с 1970 года                                                            |
|                                                                                              |                      |     monotonic                                                                                                                         |     Отображение относительного времени с момента запуска                                                       |
|                                                                                              |                      |     usec                                                                                                                              |     Отображение времени с микросекундной точностью                                                             ||                                                                                              |                      |     nsec                                                                                                                              |     Отображение времени с точностью до наносекунд                                                             ||
|                                                                                              |                      |     year                                                                                                                              |     Добавляет год в отображаемое время                                                                        |
|                                                                                              |                      |     zone                                                                                                                              |     Добавляет местный часовой пояс в отображаемое время                                                         |
|     -b                                                                                       |     --baselevel      |     \<loglevel>                                                                                                                        |     Устанавливает минимальный уровень журналирования для вывода: D(TRACE)/I(DEBUG)/W(INFO)/E(WARNING)/F(ERROR) |```markdown
Пример: hilog -G 4M
Пояснение: Устанавливает размер буфера hilogd в 4 МБ.

Пример: hilog -g
Пояснение: Получает текущий размер буфера hilogd.

Пример: hilog -w start -n 100
Пояснение: Выполняет задачу записи логов с именем "start". Количество записываемых файлов можно указать через параметр "-n". Без указания параметра "-n" по умолчанию будет записано 10 файлов.

Пример: hilog -b I
Пояснение: Устанавливает глобальный уровень логов на уровне I.

Поддерживает тип, уровень, домен и метку для исключения запросов. Исключение запросов можно выполнить с использованием параметров, начинающихся со знака "^" и разделителей ",".
Пример: hilog -t ^core,app
Пояснение: Исключает логи типов core и app, может использоваться вместе с другими параметрами.

Пример: hilog -t app core
Пояснение: Выводит логи типов app и core, может использоваться вместе с другими параметрами.
```### Локализация проблем отсутствия вывода логов
1. Проверьте правильность уровня логов.
2. Проверьте правильность domainID логов.
3. Проверьте, дошли ли вы до нужной ветви кода.
4. Проверьте наличие ключевых слов "LOGLIMIT" и "Slow reader" около времени записи логов.
LOGLIMIT: Избыточное количество логов процесса активировало механизм ограничения. Можно использовать команду `hilog -Q pidoff` для отключения механизма ограничения.

04-24 17:02:50.167 2650 2650 W A01B01/LOGLIMIT: ==com.ohos.sceneboard LOGS OVER PROC QUOTA, 46 DROPPED==

Slow reader: Избыточное количество логов во всем устройстве привело к тому, что старые логи были удалены из буфера hilogd. Можно увеличить размер буфера hilogd до 8 МБ с помощью команды `hilog -G 8M`.

04-24 17:02:19.315 0 0 I C00000/HiLog: ========Slow reader missed log lines: 209


[DFX подсистема](https://gitee.com/openharmony/docs/blob/master/ru-RU/readme/DFX_подсистема.md)

[hiviewdfx_hiview](https://gitee.com/openharmony/hiviewdfx_hiview/blob/master/README_ru.md)

**hiviewdfx_hilog**

[hiviewdfx_hiappevent](https://gitee.com/openharmony/hiviewdfx_hiappevent/blob/master/README_ru.md)

[hiviewdfx_hisysevent](https://gitee.com/openharmony/hiviewdfx_hisysevent/blob/master/README_ru.md)

```markdown
# hiviewdfx_faultloggerd

## Описание

`hiviewdfx_faultloggerd` — это демон логгирования ошибок, который используется для записи информации об ошибках в систему.

## Установка

Для установки `hiviewdfx_faultloggerd`, выполните следующие шаги:

```bash
git clone https://gitee.com/openharmony/hiviewdfx_faultloggerd.git
cd hiviewdfx_faultloggerd
make install

Настройка

Конфигурация

Конфигурационный файл находится по пути /etc/hiviewdfx_faultloggerd.conf. Для изменения параметров конфигурации используйте команду:

vi /etc/hiviewdfx_faultloggerd.conf

Пример использования

Пример запуска демона:

service hiviewdfx_faultloggerd start

Отладка

Логирование

Логи можно найти в директории /var/log/hiviewdfx_faultloggerd.

Сообщения об ошибках

Если возникли проблемы с запуском демона, сообщения об ошибках будут отображаться в журнале /var/log/hiviewdfx_faultloggerd/error.log.


---

```markdown
# hiviewdfx_hilog_lite

## Описание

`hiviewdfx_hilog_lite` — это легковесная версия компонента логгирования, которая предназначена для работы в условиях ограничения памяти.

## Установка

Для установки `hiviewdfx_hilog_lite`, выполните следующие шаги:
``````bash
git clone https://gitee.com/openharmony/hiviewdfx_hilog_lite.git
cd hiviewdfx_hilog_lite
make install

Настройка

Конфигурация

Конфигурационный файл находится по пути /etc/hiviewdfx_hilog_lite.conf. Для изменения параметров конфигурации используйте команду:

vi /etc/hiviewdfx_hilog_lite.conf

Пример использования

Пример запуска компонента:

service hiviewdfx_hilog_lite start

Отладка

Логирование

Логи можно найти в директории /var/log/hiviewdfx_hilog_lite.

Сообщения об ошибках

Если возникли проблемы с запуском компонента, сообщения об ошибках будут отображаться в журнале /var/log/hiviewdfx_hilog_lite/error.log.


hiviewdfx_hievent_lite

Описание

hiviewdfx_hievent_lite — это легковесная версия компонента событий, которая предназначена для работы в условиях ограничения памяти.

Установка

Для установки hiviewdfx_hievent_lite, выполните следующие шаги:

git clone https://gitee.com/openharmony/hiviewdfx_hievent_lite.git
cd hiviewdfx_hievent_lite
make install

Настройка

Конфигурация

Конфигурационный файл находится по пути /etc/hiviewdfx_hievent_lite.conf. Для изменения параметров конфигурации используйте команду:

vi /etc/hiviewdfx_hievent_lite.conf

Пример использования

Пример запуска компонента:

service hiviewdfx_hievent_lite start

Отладка

Логирование

Логи можно найти в директории /var/log/hiviewdfx_hievent_lite.

Сообщения об ошибках

Если возникли проблемы с запуском компонента, сообщения об ошибках будут отображаться в журнале /var/log/hiviewdfx_hievent_lite/error.log.---

hiviewdfx_hiview_lite

Описание

hiviewdfx_hiview_lite — это легковесная версия компонента представления данных, который предназначен для работы в условиях ограничения памяти.

Установка

Для установки hiviewdfx_hiview_lite, выполните следующие шаги:

git clone https://gitee.com/openharmony/hiviewdfx_hiview_lite.git
cd hiviewdfx_hiview_lite
make install

Настройка

Конфигурация

Конфигурационный файл находится по пути /etc/hiviewdfx_hiview_lite.conf. Для изменения параметров конфигурации используйте команду:

vi /etc/hiviewdfx_hiview_lite.conf

Пример использования

Пример запуска компонента:

service hiviewdfx_hiview_lite start

Отладка

Логирование

Логи можно найти в директории /var/log/hiviewdfx_hiview_lite.

Сообщения об ошибках

Если возникли проблемы с запуском компонента, сообщения об ошибках будут отображаться в журнале /var/log/hiviewdfx_hiview_lite/error.log.

Опубликовать ( 0 )

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

1
https://api.gitlife.ru/oschina-mirror/openharmony-hiviewdfx_hilog.git
git@api.gitlife.ru:oschina-mirror/openharmony-hiviewdfx_hilog.git
oschina-mirror
openharmony-hiviewdfx_hilog
openharmony-hiviewdfx_hilog
master