Enviar logs ao controle central (LCC.log)
Declaração
LCC.log(id, ...)
LCC.log(log_map)
Parâmetros
- id
Tipo integer, de 1 a 6, correspondente aos seis canais de log do controle central - ...
Parâmetros variáveis: strings, tables, um
ImageObjectou um objeto de estado da interface retornado porLCC.capture_ui_state(); tables comuns são serializadas portable.deep_dump, e as strings podem usar os placeholders[DATE]e[LINE] - log_map
Tipo table; as chaves são aliases de log (configurados por
set_log_aliases) e os valores podem ser strings, tables,ImageObject, objetos de estado da interface ou arrays contendo esses valores
Valor de retorno
- Nenhum
Descrição
Antes do envio, verifica se o endereço do controle central está configurado; caso contrário, lança um erro.
Em caso de falha de rede, tenta novamente em loop até ter sucesso e mostra uma mensagem por meio desys.toastdurante as tentativas.
Ao usar uma table de aliases, envia apenas as chaves que correspondem a aliases e grava na coluna correspondente ao alias.
Se nenhuma chave corresponder a um alias, esta chamada não enviará uma solicitação.
Exemplo
LCC.log(1, "[DATE] 开始同步", { count = 128 })
LCC.log({
["状态"] = "同步完成",
["错误"] = "0"
})
Logs de imagens
LCC.log aceita uma combinação de texto, tables comuns e imagens. Quando recebe um ImageObject, grava-o no log como PNG por padrão; strings no formato data:image/png;base64,... ou data:image/jpeg;base64,... também são reconhecidas automaticamente como imagens.
LCC.log(1, "开始", screen.image(100, 100, 200, 200), "结束")
Para reduzir o volume de transferência, compacte a imagem em um data URL JPEG e passe-o:
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()
Os logs de imagens também aceitam a forma de table de aliases. Tables comuns sem imagens continuam sendo emitidas por table.deep_dump; quando um array contém imagens, o conteúdo de texto e imagens é renderizado na ordem do array.
LCC.set_log_aliases({ "状态", "错误" })
LCC.log({
["状态"] = { "你好", screen.image(243, 247, 336, 345), "世界" },
["错误"] = "0"
})
Logs de imagens são mais adequados para diagnosticar problemas ou registrar momentos importantes e não são recomendados como parte de logs de progresso comuns. Cada imagem pode ter no máximo 20 MiB, o total de imagens de uma entrada de log pode ter no máximo 20 MiB, cada imagem pode ter no máximo 12 milhões de pixels e cada entrada pode conter no máximo 8 imagens. Se esses limites forem excedidos ou o formato não for compatível, LCC.log lançará um erro diretamente. As imagens são enviadas junto com a solicitação de log; quando há muitos dispositivos, regiões de screenshot grandes ou saídas de log muito frequentes, o conteúdo das imagens aumenta significativamente a carga de transferência na rede local, decodificação no servidor e gravação em disco, podendo atrasar outras solicitações de controle. Recomendamos registrar screenshots somente em etapas importantes e recortar ao máximo a região que precisa ser observada; para amostragem contínua, reduza primeiro a frequência ou compacte as imagens em data URLs JPEG.
Logs de estado da interface
LCC.log pode receber o objeto retornado por LCC.capture_ui_state() em um parâmetro de conteúdo do log ou como valor de uma table de aliases. O objeto de estado da interface não é uma table de aliases de log; é necessário especificar um canal de log, pois LCC.log(state) lançará um erro de parâmetro. LCC.capture_ui_state() exige ui_element 0.6.0 ou posterior no dispositivo; se o módulo não estiver disponível ou a versão for muito antiga, atualize o XXTouch antes de usar capture_ui_state. O log enviará os bytes .xxtuie originais armazenados em cache pelo objeto, e o texto alternativo será [界面状态]; tables de aliases e arrays de texto e imagens também são compatíveis.
local state = LCC.capture_ui_state()
LCC.log(1, "提交失败", state)
state:destroy()
Uma solicitação HTTP pode conter no máximo um estado da interface; depois da decodificação, o total de imagens comuns e do estado da interface na mesma solicitação não pode exceder 20 MiB. Não é possível gravar no log depois que o objeto é destruído. Para obter informações sobre captura de estado, salvamento local e liberação de recursos, consulte LCC.capture_ui_state.
O histórico de logs exibe imagens e estados da interface como cartões de anexos. Clique em uma imagem para visualizar a original e abrir o seletor de cores pela visualização; clique no cartão de estado da interface para abrir a ferramenta de elementos de texto e restaurar a screenshot e a árvore de elementos. Ao exportar logs com anexos, você pode exportar somente texto puro ou um arquivo zip com HTML navegável, imagens originais e os arquivos .xxtuie originais. Se um arquivo de anexo estiver ausente, o HTML exibirá um marcador de ausência, enquanto o restante do conteúdo do log e os anexos existentes continuarão sendo exportados.