Отправка логов в центральную консоль (LCC.log)
Сигнатура
LCC.log(id, ...)
LCC.log(log_map)
Параметры
- id
Целое число от 1 до 6, соответствует одному из шести каналов логов консоли - ...
Переменное число аргументов: строки, таблицы,
ImageObjectили объект состояния интерфейса отLCC.capture_ui_state(); обычные таблицы сериализуются черезtable.deep_dump, а в строках можно использовать заполнители[DATE]и[LINE] - log_map
Таблица, где ключи — псевдонимы логов (настраиваются через
set_log_aliases), а значения — строки, таблицы,ImageObject, объекты состояния интерфейса или массивы с ними
Возвращаемое значение
- Нет
Описание
Перед отправкой проверяется наличие адреса консоли; если адрес не настроен, выдаётся ошибка.
При сетевой ошибке выполняются повторные попытки до успеха, а во время ожидания показывается уведомление черезsys.toast.
При использовании таблицы псевдонимов отправляются только совпавшие ключи и записываются в столбцы, соответствующие псевдонимам.
Если в таблице псевдонимов нет совпадающих ключей, этот вызов не отправляет запрос.
Пример
LCC.log(1, "[DATE] 开始同步", { count = 128 })
LCC.log({
["状态"] = "同步完成",
["错误"] = "0"
})
Логи изображений
LCC.log поддерживает смешивание текста, обычных таблиц и изображений. Переданный ImageObject по умолчанию записывается в лог как PNG; строки вида data:image/png;base64,... или data:image/jpeg;base64,... также автоматически распознаются как изображения.
LCC.log(1, "开始", screen.image(100, 100, 200, 200), "结束")
Чтобы уменьшить объём передачи, изображение можно предварительно сжать в JPEG data URL:
local img = screen.image(100, 100, 200, 200)
local jpg = "data:image/jpeg;base64," .. img:jpeg_data(0.7):base64_encode()
LCC.log(1, "压缩截图", jpg)
img:destroy()
Таблица псевдонимов также поддерживает логи изображений. Обычная таблица без изображений по-прежнему выводится через table.deep_dump; изображения в массиве визуализируются в порядке элементов.
LCC.set_log_aliases({ "状态", "错误" })
LCC.log({
["状态"] = { "你好", screen.image(243, 247, 336, 345), "世界" },
["错误"] = "0"
})
Логи изображений лучше использовать для диагностики и фиксации важных моментов, а не для обычного журнала прогресса. Размер одного изображения и общий размер изображений в одном логе — до 20 MiB, одно изображение — до 12 миллионов пикселей, в одном логе — не более 8 изображений; при превышении ограничений или неподдерживаемом формате LCC.log сразу выдаёт ошибку. Изображения загружаются вместе с запросом лога; при большом числе устройств, крупных областях снимка или частом выводе логов они заметно увеличивают нагрузку на локальную сеть, декодирование на сервере и запись на диск, что может замедлить другие запросы управления. Рекомендуется сохранять снимки только на ключевых шагах и обрезать их до нужной области; для постоянной выборки лучше снизить частоту или самостоятельно сжимать изображения в JPEG data URL.
Логи состояния интерфейса
LCC.log может принимать объект от LCC.capture_ui_state() как аргумент содержимого лога или значение таблицы псевдонимов. Сам объект состояния интерфейса не является таблицей псевдонимов, поэтому канал лога нужно указать; LCC.log(state) выдаёт ошибку параметров. LCC.capture_ui_state() требует на устройстве ui_element версии 0.6.0 или новее; при недоступном или слишком старом модуле обновите XXTouch и используйте capture_ui_state. В лог загружаются исходные кэшированные байты .xxtuie, а текстовый запасной вариант — [界面状态]; таблицы псевдонимов и массивы текста с изображениями также поддерживаются.
local state = LCC.capture_ui_state()
LCC.log(1, "提交失败", state)
state:destroy()
Один HTTP-запрос может содержать не более одного состояния интерфейса; после декодирования общий объём обычных изображений и состояния в запросе не должен превышать 20 MiB. После уничтожения объекта записать его в лог нельзя. О захвате, локальном сохранении и освобождении ресурсов см. LCC.capture_ui_state.
История логов показывает изображения и состояния интерфейса как карточки вложений. Нажмите изображение, чтобы просмотреть оригинал и открыть пипетку; нажатие карточки состояния интерфейса открывает инструмент текстовых элементов и восстанавливает снимок и дерево элементов. При экспорте логов с вложениями можно экспортировать только текст или ZIP с просматриваемым HTML, оригиналами и исходными .xxtuie; если вложение отсутствует, в HTML показывается заглушка, а остальные данные и доступные вложения экспортируются.