Chuyển tới nội dung chính

Gửi nhật ký tới trung tâm điều khiển (LCC.log)

Khai báo​

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

Tham số​

  • id
    Kiểu số nguyên, phạm vi 1~6, tương ứng với 6 kênh nhật ký của trung tâm điều khiển
  • ... Tham số biến đổi, có thể là chuỗi, bảng, ImageObject hoặc đối tượng trạng thái giao diện do LCC.capture_ui_state() trả về; bảng thông thường sẽ được tuần tự hóa bằng table.deep_dump, chuỗi có thể sử dụng các phần giữ chỗ [DATE] và [LINE]
  • log_map Kiểu bảng, khóa là bí danh nhật ký (cần được cấu hình bằng set_log_aliases), giá trị có thể là chuỗi, bảng, ImageObject, đối tượng trạng thái giao diện hoặc bảng mảng chứa các nội dung này

Giá trị trả về​

  • Không có

Mô tả​

Trước khi gửi, hàm sẽ kiểm tra xem địa chỉ trung tâm điều khiển đã được cấu hình hay chưa; nếu chưa, hàm sẽ phát sinh lỗi.
Khi gặp lỗi mạng, hàm sẽ liên tục thử lại cho đến khi thành công và hiển thị thông báo qua sys.toast trong quá trình thử lại.
Khi sử dụng bảng bí danh, hàm chỉ gửi các khóa khớp với bí danh và ghi vào số cột tương ứng với bí danh đó.
Nếu bảng bí danh không có khóa nào khớp, lần gọi này sẽ không gửi yêu cầu.

Ví dụ​

LCC.log(1, "[DATE] Bắt đầu đồng bộ", { count = 128 })

LCC.log({
["Trạng thái"] = "Đồng bộ hoàn tất",
["Lỗi"] = "0"
})

Nhật ký hình ảnh​

LCC.log hỗ trợ kết hợp văn bản, bảng thông thường và hình ảnh. Khi truyền vào ImageObject, hình ảnh sẽ mặc định được ghi vào nhật ký ở định dạng PNG; chuỗi có dạng data:image/png;base64,... hoặc data:image/jpeg;base64,... cũng sẽ tự động được nhận dạng là hình ảnh.

LCC.log(1, "Bắt đầu", screen.image(100, 100, 200, 200), "Kết thúc")

Nếu cần giảm dung lượng truyền, bạn có thể tự nén hình ảnh thành JPEG data URL rồi truyền và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, "Ảnh chụp đã nén", jpg)
img:destroy()

Dạng bảng bí danh cũng hỗ trợ nhật ký hình ảnh. Nếu bảng thông thường không chứa hình ảnh, bảng vẫn được xuất bằng table.deep_dump; khi bảng mảng chứa hình ảnh, nội dung văn bản và hình ảnh sẽ được hiển thị theo thứ tự của mảng.

LCC.set_log_aliases({ "Trạng thái", "Lỗi" })

LCC.log({
["Trạng thái"] = { "Xin chào", screen.image(243, 247, 336, 345), "Thế giới" },
["Lỗi"] = "0"
})

Nhật ký hình ảnh phù hợp hơn để chẩn đoán sự cố hoặc ghi lại trạng thái quan trọng tại hiện trường; không nên dùng làm một phần của nhật ký tiến độ thông thường. Mỗi hình ảnh có kích thước tối đa 20 MiB, tổng kích thước hình ảnh trong một mục nhật ký tối đa 20 MiB, mỗi hình ảnh tối đa 12 triệu pixel và mỗi mục nhật ký tối đa 8 hình ảnh; nếu vượt quá giới hạn hoặc định dạng hình ảnh không được hỗ trợ, LCC.log sẽ báo lỗi trực tiếp. Hình ảnh sẽ được tải lên cùng với yêu cầu ghi nhật ký; khi có nhiều thiết bị, vùng chụp lớn hoặc nhật ký được xuất với mật độ cao, nội dung hình ảnh sẽ làm tăng đáng kể lưu lượng truyền trong mạng cục bộ, công việc giải mã phía máy chủ và áp lực ghi xuống ổ đĩa, từ đó có thể làm chậm phản hồi của các yêu cầu điều khiển khác. Chỉ nên chụp ảnh ở những bước quan trọng và cắt ảnh sát vùng cần quan sát; nếu cần lấy mẫu liên tục, hãy ưu tiên giảm tần suất hoặc tự nén thành JPEG data URL.

Nhật ký trạng thái giao diện​

LCC.log có thể nhận đối tượng do LCC.capture_ui_state() trả về trong tham số nội dung nhật ký hoặc trong giá trị của bảng bí danh. Bản thân đối tượng trạng thái giao diện không phải là bảng bí danh nhật ký nên phải chỉ định kênh nhật ký; LCC.log(state) sẽ phát sinh lỗi tham số. LCC.capture_ui_state() yêu cầu mô-đun ui_element phiên bản 0.6.0 trở lên trên thiết bị; nếu mô-đun không khả dụng hoặc phiên bản quá thấp, hãy cập nhật XXTouch rồi mới sử dụng capture_ui_state. Nhật ký sẽ tải lên dữ liệu byte .xxtuie gốc được lưu trong bộ nhớ đệm của đối tượng, với nội dung văn bản dự phòng chính xác là [界面状态] (nghĩa là “trạng thái giao diện”); cách viết bằng bảng bí danh và mảng kết hợp văn bản-hình ảnh cũng được hỗ trợ.

local state = LCC.capture_ui_state()
LCC.log(1, "Gửi thất bại", state)
state:destroy()

Mỗi yêu cầu HTTP chỉ được chứa tối đa một trạng thái giao diện; tổng kích thước sau khi giải mã của hình ảnh thông thường và trạng thái giao diện trong cùng một yêu cầu không được vượt quá 20 MiB. Không thể ghi đối tượng vào nhật ký sau khi đối tượng đã bị hủy. Để biết cách chụp trạng thái, lưu cục bộ và giải phóng tài nguyên, hãy xem LCC.capture_ui_state.

Lịch sử nhật ký hiển thị hình ảnh và trạng thái giao diện dưới dạng thẻ tệp đính kèm. Nhấp vào hình ảnh để xem trước ảnh gốc và mở bộ chọn màu từ màn hình xem trước; nhấp vào thẻ trạng thái giao diện để mở công cụ phần tử văn bản, khôi phục ảnh chụp màn hình và cây phần tử. Khi xuất nhật ký có tệp đính kèm, bạn có thể chọn chỉ xuất văn bản thuần túy hoặc xuất tệp zip chứa HTML có thể duyệt, ảnh gốc và tệp .xxtuie gốc; nếu một tệp đính kèm đã bị thiếu, HTML sẽ hiển thị phần giữ chỗ báo thiếu, còn nội dung nhật ký khác và các tệp đính kèm vẫn tồn tại vẫn tiếp tục được xuất.