HiLog — это система логов OpenHarmony, которая предоставляет возможность системным фреймворкам, службам и приложениям выводить логи, а также записывать действия пользователя и состояние системы.
Рисунок 1 Архитектурная схема HiLog
Процесс в пространстве пользователя использует интерфейсы логов для записи содержимого логов в буфер hilogd. Инструмент hilog в пространстве пользователя позволяет выводить логи на консоль для просмотра, а также отправляет команды hilogd для записи логов на диск.
Основные задачи:
Предлагаю небольшие изменения для улучшения грамматики:
Когда модуль в пространстве пользователя вызывает интерфейсы логов, он передает отформатированное содержимое логов этому сервису, который хранит его в циклическом буфере.- hilog — инструмент для просмотра логов через командную строку.
Читает содержимое циклического буфера из hilogd и выводит его на стандартный поток вывода, поддерживая фильтрацию логов.
Поддерживаемые возможности:
/base/hiviewdfx/hilog
├── frameworks # Код фреймворков
│ └── native # Реализация HiLog native
├── interfaces # Интерфейсы
│ └── native # Внешние C/C++ интерфейсы
│ └── innerkits # Головные файлы для внутренних подсистем
│ └── kits # Головные файлы для приложений
│ └── js # Внешние JS интерфейсы
├── services
│ └── hilogd # Реализация сервиса постоянной работы для логов
│ └── hilogtool # Реализация инструмента для логов
Зависит от компилятора Clang версии (Clang 8.0.0) и выше.
Интерфейсы 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
Объяснение:
Описание: Уровни логов должны соответствовать реальному уровню содержимого логов. Объяснение уровней логов:
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.
Цель: Предотвратить снижение производительности приложения и ошибки печати из-за слишком больших объемов данных в логах. Для этого используется механизм ограничения количества логов, который по умолчанию отключен для приложений уровня 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 запись.
Цель: Защита конфиденциальной информации путём её замены на специальное значение "". По умолчанию этот механизм отключён для приложений уровня 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>
.
Используйте команду 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
, выполните следующие шаги:
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
, выполните следующие шаги:
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 )