{"id":20943269,"url":"https://github.com/kotyara12/rlog","last_synced_at":"2025-06-13T05:04:12.991Z","repository":{"id":134652895,"uuid":"355592091","full_name":"kotyara12/rLog","owner":"kotyara12","description":"Библиотека для форматированного вывода отладочных сообщений на Arduino и ESP-IDF с возможностью отключения / Library for formatted output of debug messages on Arduino and ESP-IDF with the ability to disable","archived":false,"fork":false,"pushed_at":"2023-02-13T07:30:49.000Z","size":255,"stargazers_count":5,"open_issues_count":2,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-11T16:13:13.589Z","etag":null,"topics":["arduino","esp-idf","esp32","esp8266","logger","logging"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kotyara12.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-07T15:19:38.000Z","updated_at":"2024-10-30T06:42:07.000Z","dependencies_parsed_at":null,"dependency_job_id":"423ed690-f242-4a66-bd81-0668dc0afbae","html_url":"https://github.com/kotyara12/rLog","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kotyara12/rLog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kotyara12%2FrLog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kotyara12%2FrLog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kotyara12%2FrLog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kotyara12%2FrLog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kotyara12","download_url":"https://codeload.github.com/kotyara12/rLog/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kotyara12%2FrLog/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259584749,"owners_count":22880194,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","esp-idf","esp32","esp8266","logger","logging"],"created_at":"2024-11-18T23:35:22.032Z","updated_at":"2025-06-13T05:04:12.821Z","avatar_url":"https://github.com/kotyara12.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿# rLog: библиотека для вывода отладочных сообщений с возможностью отключения\n\n\u003e If you do not understand this text, please use the English version: \u003cbr/\u003ehttps://github.com/kotyara12/rLog/blob/master/README_EN.md \u003cbr/\u003eSorry for the machine translation into English.\n\nДанная библиотека представляет собой _набор макросов_ для вывода _форматированных_ отладочных сообщений в COM-порт (с использованием стандартной функции printf), _с возможностью частичного или полного их исключения из кода программы при необходимости_. Создана на основе библиотеки [\u003cesp32-hal-log.h\u003e для Framework Arduino ESP32](https://github.com/espressif/arduino-esp32/blob/master/cores/esp32/esp32-hal-log.h), с целью обеспечения работоспособности на различных микроконтроллерах и инструментах разработки. Протестировано на AVR, ESP32, ESP8266 для PlatformIO и Arduino IDE. Библиотека _не использует объекты типа String_, вся работа основана на динамическом выделении памяти под строки с помощью стандартных функций, что экономит память.\n\n## Возможности\n* Поддержка [форматированных сообщений](https://docs.microsoft.com/ru-ru/cpp/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions?view=msvc-160)\n* Автоматический вывод отметки времени, типа сообщения и идентификатора задачи при выводе отладочных сообщений (см. \"Формат вывода\" ниже). Вам больше не нужно заботится об этом.\n* Имеется возможность вывода имени файла и номера строки, из которого была вызвана команда.\n* Возможность выбора уровня отладки при компиляции: NONE, ERROR, WARNING, INFO, DEBUG, VERBOSE. Все сообщения, которые выше заданного уровня, будут игнорированы компилятором и не попадут в финальный код\n* Поддержка цветовых маркеров при выводе. _Примечание: но эта функция работает не во всех инструментах разработки и не на всех операционных системах (например для PlatformIO под Windows7 мне не удалось заставить это работать, а под Windows 10 работает прекрасно), это не зависит от библиотеки_\n\n## Формат вывода\nПри настройках \"по умолчанию\" Вы увидете следующий текст:\n\n**23:59:59 [E] TAG: Message**\n\nгде:\n\n* 23:59:59 - Отметка времени\n* [E] - Тип сообщения, в данном примере это \"ошибка\"\n* TAG - Ярлык (метка), с помощью которой можно определить, какой модуль вызывал данное сообщение\n* Message - Собственно текст сообщения\n\n## Использование\nПеред использованием библиотеки как минимум выберите уровень отладочных сообщений проекта с помощью определения макроса **CONFIG_RLOG_PROJECT_LEVEL** (см. раздел \"Настройки\" ниже).\n\nВывод отладочных сообщений в последовательный порт осуществляется с помощью функций-макросов:\n\n```\nrlog_v(tag, format, ...) - вывод сообщения уровня VERBOSE\nrlog_d(tag, format, ...) - вывод сообщения уровня DEBUG\nrlog_i(tag, format, ...) - вывод сообщения уровня INFORMATION\nrlog_w(tag, format, ...) - вывод сообщения уровня WARNING\nrlog_e(tag, format, ...) - вывод сообщения уровня ERROR\n```\n\nгде \n\n* tag - это текстовая метка для обозначения модуля, откуда была вызвана функция\n* format - строка сообщения или формата. Но не следует использовать здесь _строковые переменные напрямую_. Например если Вам требуется вывести имя пользователя из переменной user_name, то вместо `rlog_i(logTAG, user_name)` необходимо использовать конструкцию вида `rlog_i(logTAG, \"%s\", user_name)`\n* ... - данные для вывода в спецификации преобразования, _не обязательно_ (см. https://docs.microsoft.com/ru-ru/cpp/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions)\n\nНапример для команды:\n\n```\nrlog_e(\"WiFi\", \"Не удалось подключиться к точке доступа %s, код ошибки %d\", ap_name, err);\n```\n\nбудет выведен следующий текст:\n\n```\n12:34:10 [E] WiFi: Не удалось подключиться к точке доступа test, код ошибки -201\n```\n\nПри этом, если \"уровень\" функции сообщения (например rlog_v) будет выше заданного в **CONFIG_RLOG_PROJECT_LEVEL**, то предпроцессор просто исключит этот вызов при компиляции, сокращая затраты памяти. \n\n## Настройки\nНастройки модуля осуществляются с помощью определения нескольких макросов:\n\n* **CONFIG_RLOG_PROJECT_LEVEL** RLOG_LEVEL_XXXX\n\nГде **RLOG_LEVEL_XXXX** это одно из следующих значений (см. rLog.h):\n\n```\nRLOG_LEVEL_NONE       (0)    /* Нет вывода */\nRLOG_LEVEL_ERROR      (1)    /* Критические ошибки, программный модуль не может восстановиться самостоятельно */\nRLOG_LEVEL_WARN       (2)    /* Состояния ошибки, из которых были приняты меры по устранению */\nRLOG_LEVEL_INFO       (3)    /* Информационные сообщения, описывающие нормальный ход событий */\nRLOG_LEVEL_DEBUG      (4)    /* Дополнительная информация, которая не требуется для нормального использования (значения, указатели, размеры и т.д.). */\nRLOG_LEVEL_VERBOSE    (5)    /* Большие фрагменты отладочной информации или частые сообщения, которые потенциально могут переполнить вывод. */\n```\n\nПо умолчанию **RLOG_LEVEL_ERROR**\n\n* **CONFIG_RLOG_PROJECT_COLORS** [0/1]\n\nУстановите 1, чтобы в сообщения были добавлены \"метки цвета\". Это позволит окрасить сообщения разного типа в разные цвета.\n\nПо умолчанию **0**\n\n* **CONFIG_RLOG_SHOW_TIMESTAMP** [0/1]\n\nУстановите 1, чтобы в сообщения была автоматически добавлена отметка времени события.\n\nПо умолчанию **1**\n\n* **CONFIG_RLOG_SHOW_FILEINFO** [0/1]\n\nУстановите 1, чтобы добавить в выводимые сообщения имя файла и номер строки, из которых была вызвана команда.\n\nПо умолчанию **1**\n\n#### Макросы должны быть определены в таком месте, чтобы при сборке _библиотеки_ компилатор смог их найти. \n\nСделать это можно несколькими способами:\n\n* **С помощью файла [platformio.ini](https://docs.platformio.org/page/projectconf.html)**\n\nЕсли Вы используте PlatformIO, то вы можете просто добавить определения в [настройки проекта](https://docs.platformio.org/en/latest/projectconf/section_env_build.html#build-flags) (или даже настройки рабочего места):\n\n```\n[env]\nbuild_flags = \n  -D CONFIG_RLOG_PROJECT_LEVEL=RLOG_LEVEL_INFO\n  -D CONFIG_RLOG_PROJECT_COLORS=1\n```\n\n* **С помощью файла sdkconfig.esp32dev**\n\nЕсли Вы используете фреймворк ESP-IDF, то автоматически Вы получаете файл глобальных настроек проекта **sdkconfig.esp32dev**. Используя специальные методы, можно добавить в него свои параметры. Эти параметры будут доступны из всех файлов и библиотек проекта, что есть удобно.\n\n* **С помощью файла project_config.h**\n\nЯ использую отдельный файл конфигурации проекта - **project_config.h**, который содержит настройки только моих модулей и библиотек. Это удобно. Проблема только в том, чтобы файл был доступен из библиотек, которые находятся в каталоге, отличном от каталога проекта. В этом случае компилятору необходимо подсказать, где его искать:\n\n```\n[env]\nbuild_flags = -Isrc \n```\t\n\nЭтот флаг заставит компилятор при сборке библиотек просматривать подкаталог src из каталога проекта, куда я и поместил свой project_config.h.\n\n## Зависимости\nБиблиотека зависит только от \"стандартных\" библиотек:\n* stdint.h\n* stdio.h\n* stdarg.h\n* stdlib.h\n* time.h\n\n## Поддерживаниваемые платформы\nБиблиотека протестирована на **VSCode + PlatformIO** и **Arduino IDE** для микроконтроллеров AVR, ESP32 и ESP8266. Предполагается, что список микроконтроллеров может больше. Библиотека не зависит от используемого Framework-а: например это может быть Arduino или Espressif32 (ESP-IDF).\n\n## Примеры использования:\n* arduinoide-arduino\n* platformio-avr-arduino\n* platformio-esp32-arduino\n* platformio-esp32-espidf\n* platformio-esp8266-arduino\n\n## Примечание\nДанные замечания относятся к моим библиотекам, размещенным на ресурсе https://github.com/kotyara12?tab=repositories.\n\n- библиотеки, название которых начинается с префикса **re**, предназначены только для ESP32 и ESP-IDF (FreeRTOS)\n- библиотеки, название которых начинается с префикса **ra**, предназначены только для ARDUINO\n- библиотеки, название которых начинается с префикса **r**, могут быть использованы и для ARDUINO, и для ESP-IDF\n\nТак как я в настроящее время разрабатываю программы в основном для ESP-IDF, основная часть моих библиотек предназначена только для этого фреймворка. Но Вы можете портировать их для другой системы, взяв за основу.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkotyara12%2Frlog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkotyara12%2Frlog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkotyara12%2Frlog/lists"}