Zum Hauptinhalt springen

Zentralenprotokoll senden (LCC.log)

Deklaration​

LCC.log(id, ...)
LCC.log(log_map)

Parameter​

  • id
    Integer von 1 bis 6, der auf einen der sechs Protokollkanäle der Zentrale verweist.
  • ... Variable Argumente. Zeichenketten, Tabellen, ImageObject oder ein von LCC.capture_ui_state() zurückgegebenes UI-Zustandsobjekt; normale Tabellen werden mit table.deep_dump serialisiert, und Zeichenketten können die Platzhalter [DATE] und [LINE] enthalten.
  • log_map Tabelle, deren Schlüssel den mit set_log_aliases definierten Aliasen entsprechen; Werte können Zeichenketten, Tabellen, ImageObject, UI-Zustandsobjekte oder Arrays mit solchen Werten sein.

Rückgabewerte​

  • keine

Hinweise​

Vor dem Senden wird geprüft, ob eine Zentralenadresse konfiguriert ist; andernfalls wird ein Fehler ausgelöst.
Bei Netzwerkfehlern wird bis zum Erfolg wiederholt; während der Wiederholungen wird eine Meldung über sys.toast angezeigt.
Bei Verwendung der Alias-Tabelle werden nur passende Schlüssel gesendet und in den dem Alias entsprechenden Kanal geschrieben.
Wenn kein Schlüssel der Alias-Tabelle übereinstimmt, sendet dieser Aufruf keine Anfrage.

Beispiel​

LCC.log(1, "[DATE] 开始同步", { count = 128 })

LCC.log({
["状态"] = "同步完成",
["错误"] = "0"
})

Bildprotokolle​

LCC.log unterstützt gemischte Texte, normale Tabellen und Bilder. Ein übergebenes ImageObject wird standardmäßig als PNG protokolliert; Zeichenketten im Format data:image/png;base64,... oder data:image/jpeg;base64,... werden ebenfalls automatisch als Bilder erkannt.

LCC.log(1, "开始", screen.image(100, 100, 200, 200), "结束")

Um die Übertragungsgröße zu verringern, können Sie das Bild selbst komprimieren und als JPEG-Data-URL übergeben:

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()

Die Alias-Tabellenform unterstützt ebenfalls Bildprotokolle. Eine normale Tabelle ohne Bilder wird weiterhin mit table.deep_dump ausgegeben; ein Array mit Bildern wird in seiner Reihenfolge als gemischter Text- und Bildinhalt dargestellt.

LCC.set_log_aliases({ "状态", "错误" })

LCC.log({
["状态"] = { "你好", screen.image(243, 247, 336, 345), "世界" },
["错误"] = "0"
})

Bildprotokolle eignen sich eher zur Diagnose und Dokumentation wichtiger Situationen und nicht als Bestandteil gewöhnlicher Fortschrittsprotokolle. Ein Bild darf höchstens 20 MiB und 12 Megapixel groß sein; alle Bilder eines Eintrags dürfen zusammen höchstens 20 MiB umfassen, und ein Eintrag darf höchstens 8 Bilder enthalten. Bei überschrittenen Grenzen oder nicht unterstützten Formaten löst LCC.log direkt einen Fehler aus. Bilder werden mit der Protokollanfrage hochgeladen; bei vielen Geräten, großen Screenshotbereichen oder sehr häufiger Protokollausgabe erhöhen sie den LAN-, Dekodierungs- und Festplattenaufwand und können andere Steuerungsanfragen verlangsamen. Erfassen Sie Screenshots daher möglichst nur an wichtigen Punkten und beschneiden Sie sie auf den relevanten Bereich; für kontinuierliche Abtastung sollten Sie die Frequenz senken oder eine selbst komprimierte JPEG-Data-URL verwenden.

UI-Zustandsprotokolle​

LCC.log kann das von LCC.capture_ui_state() zurückgegebene Objekt als Protokollinhalt oder als Wert einer Alias-Tabelle annehmen. Ein UI-Zustandsobjekt ist selbst keine Alias-Tabelle, daher muss ein Protokollkanal angegeben werden; LCC.log(state) löst einen Argumentfehler aus. LCC.capture_ui_state() erfordert ui_element 0.6.0 oder höher auf dem Gerät. Ist das Modul nicht verfügbar oder zu alt, aktualisieren Sie XXTouch vor der Verwendung von capture_ui_state. Das Protokoll lädt die unveränderten .xxtuie-Bytes aus dem Objektcache hoch und verwendet [界面状态] als Textfallback; Alias-Tabellen und gemischte Arrays unterstützen UI-Zustandsobjekte ebenfalls.

local state = LCC.capture_ui_state()
LCC.log(1, "提交失败", state)
state:destroy()

Eine HTTP-Anfrage darf höchstens einen UI-Zustand enthalten; normale Bilder und UI-Zustand derselben Anfrage dürfen nach dem Dekodieren zusammen 20 MiB nicht überschreiten. Nach dem Zerstören eines Objekts kann es nicht mehr protokolliert werden. Informationen zu Erfassungsstatus, lokaler Speicherung und Freigabe finden Sie unter LCC.capture_ui_state.

Der Protokollverlauf zeigt Bilder und UI-Zustände als Anhangkarten. Klicken Sie auf ein Bild, um das Original zu öffnen und zur Farbpipette zu wechseln; eine UI-Zustandskarte öffnet das Textelementwerkzeug und stellt Screenshot und Elementbaum wieder her. Beim Export von Protokollen mit Anhängen können Sie nur Text oder eine ZIP-Datei mit durchsuchbarem HTML, Originalbildern und ursprünglichen .xxtuie-Dateien exportieren. Fehlt eine Anhangdatei, zeigt das HTML einen Platzhalter an; die übrigen Protokollinhalte und vorhandenen Anhänge werden weiterhin exportiert.