跳转至

errDump - 错误上报

以下为关键点梳理

一、模块概述

errDump 模块主要用于处理和管理设备的异常日志,包括读取、记录和上传日志等功能,帮助开发者监控设备运行状态和排查问题。它支持将日志发送到合宙 IoT 平台或用户自定义的服务器。

二、核心功能与用法

(一)手动读取异常日志

  • 函数errDump.dump(zbuff, type, isDelete)
  • 参数

  • zbuff :用于存储读取到的日志数据的缓冲区。

  • type :指定日志的类型,如 errDump.TYPE_SYS 表示系统记录的异常日志。
  • isDelete :布尔值,true 表示读取后删除日志,false 表示仅读取不删除。
  • 返回值 :返回读取到的日志数据。
  • 示例

  • local result = errDump.dump(buff, errDump.TYPE_SYS, false) :读取系统记录的异常日志到缓冲区 buff 中,且不删除日志。

  • local result = errDump.dump(nil, errDump.TYPE_SYS, true) :清除系统记录的异常日志。

(二)写入用户异常日志

  • 函数errDump.record(string)
  • 参数string 为要记录的日志字符串,最大容量 4KB,超出部分新日志覆盖旧日志。
  • 返回值 :无。
  • 示例errDump.record("socket long time no connect") :记录下 “socket long time no connect” 这条日志。

(三)配置日志上传

  • 函数errDump.config(ena``ble, period, user_flag, custom_id, host,`` port)
  • 参数

  • enable :布尔值,true 表示启用日志上传功能,false 表示关闭。

  • period :设置日志上传的时间间隔,单位为秒。若设为 0,则仅记录日志但不主动上传,由用户自行实现上传功能。
  • user_flag :附加在上传日志时的标识信息,可为 nil
  • custom_id :自定义的设备识别号,用于在上传日志时区分设备。
  • host :指定上传日志的目标服务器地址。
  • port :指定上传日志的目标服务器端口。
  • 返回值 :无。
  • 示例

  • errDump.config(true, 3600, "12345678") :每小时尝试上传一次日志,并在上传时在 imei 后附加 "12345678"。

  • errDump.config(false) :关闭日志记录和上传功能。
  • errDump.config(true, 0) :记录日志但不主动上传。
  • errDump.config(true, 3600, nil, "ABC") :每小时尝试上传一次日志,使用自定义设备识别号 "ABC"。
  • errDump.config(true, 3600, nil, nil, "dev_msg1.openluat.com", 12425) :每小时尝试上传一次日志到指定的服务器地址和端口。

三、其他信息

  1. 关于合宙 IoT 云平台

    • 平台网址IoT.openLuat.com
    • 账号管理 :模组出厂前,会根据客户下单时的说明,将订单内模组的 IMEI 放在指定的 IoT 账号内。若未指定,则默认用收件人手机号建立新账号,密码默认为 888888。只有账号拥有者可对其账号下的设备进行管理,包括账号权限转移、FOTA、errDump 设置等操作,合宙无法代替操作。
    • 注意事项 :若在 errDump.config 中配置了周期上传,则不能使用 errDump.dump 函数。

以下为详细说明

示例

-- 基本用法, 10分钟上报一次,如果有的话
if errDump then
    errDump.config(true, 600)
end

-- 附开源服务器端: https://gitee.com/openLuat/luatos-devlog

errDump.dump(zbuff, type, isDelete)

手动读取异常日志;

主要用于用户将日志发送给自己的服务器,而不是合宙IoT平台(IoT.openLuat.com);

如果在errDump.config配置了周期上传,则不能使用本函数;

参数

传入值类型 解释
zbuff 日志信息缓存,如果为nil就不会读出,一般当
int 日志类型,目前只有errDump.TYPE_SYS和errDump.TYPE_USR
boolean 是否删除日志

返回值

返回值类型 解释
boolean true表示本次读取前并没有写入数据,false反之,在删除日志前,最好再读一下确保没有新的数据写入了

例子

local result = errDump.dump(buff, errDump.TYPE_SYS, false) --读出系统记录的异常日志
local result = errDump.dump(nil, errDump.TYPE_SYS, true) --清除系统记录的异常日志

errDump.record(string)

写入用户的异常日志,注意最大只有4KB,超过部分新的覆盖旧的,开启自动上传后会上传到合宙IoT平台(IoT.openLuat.com)

参数

传入值类型 解释
string 日志

返回值

返回值类型 解释
nil 无返回值

例子

errDump.record("socket long time no connect") --记录下"socket long time no connect"

errDump.config(enable, period, user_flag, custom_id, host, port)

配置关键日志上传合宙IoT平台(iot.openluat.com),这里的日志包括引起luavm异常退出的日志和用户通过record写入的日志,类似于air的errDump

参数

传入值类型 解释
boolean 是否启用记录功能,false的话将不会记录任何日志
int 定时上传周期,单位秒,默认600秒,这个是自动上传时候后的重试时间时间,在开机后或者有record操作后会很快尝试上传到合宙IoT平台一次,如果为0,则不会上传,由用户dump后自己上传自己的平台
string 用户的特殊标识,可以为空
string 设备识别号, 4G设备默认是imei,其他设备默认是mcu.unique_id
string 服务器域名,默认dev_msg1.openluat.com
int 服务器端口,默认

返回值

返回值类型 解释
nil 无返回值

例子

errDump.config(true, 3600, "12345678")    --一个小时尝试上次一次,上传时会在imei后附加上12345678
errDump.config(false)    --关闭记录功能,不再上传
errDump.config(true, 0)    --记录,但是不会主动上传,由用户实现上传功能

-- 2023.09.22新增custom_id参数
errDump.config(true, 3600, nil, "ABC")    --一个小时尝试上次一次,上传时使用自定义的设备识别号ABC

-- 2023.12.8 新增host和port参数
errDump.config(true, 3600, nil, nil, "dev_msg1.openluat.com", 12425)

关于合宙IoT云平台的说明

  1. 合宙IoT云平台网址:IoT.openLuat.com ;

  2. 合宙模组在出厂前,会按照下单前客户的说明,将订单内模组的IMEI放在下单人指定的IoT账号内,如果没有指定,则默认用收件人的手机号建立一个新账号,密码默认888888,并将该订单内模组的IMEI放在该账号下;

  3. 只有该账号的拥有者才可以对其账号下的设备进行管理,包括账号权限转移、FOTA、errDump设置等相关操作,合宙无法代替操作;