errdump_read.lua 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. --[[
  2. @module errdump_read
  3. @summary errdump手动读取功能模块
  4. @version 1.0
  5. @date 2025.09.05
  6. @author 孟伟
  7. @usage
  8. 本功能模块演示的内容为:
  9. 手动读取异常日志,通过消息"ERRDUMP_DATA_SEND_UART"发布出去通知串口接收进行处理,
  10. 通过消息"SEND_DATA_REQ"发布出去通知tcp接收进行处理。
  11. 如果是系统异常日志,则会在重启后手动读取上报,用户写入的调试日志则需要手动读取上报。
  12. 注意:用户写入的调试日志只能手动读取上报,不能自动上报。
  13. ]]
  14. --加载uart模块
  15. require "uart_app"
  16. --加载tcp主应用模块
  17. require "tcp_client_main"
  18. local function test_user_log()
  19. -- 下面演示手动获取异常日志信息,手动读取到异常日志可以上报到自己服务器
  20. errDump.config(true, 0) --配置为手动读取,如果配置为自动上报将无法手动读取系统异常日志
  21. local err_buff = zbuff.create(4096)
  22. local new_flag = errDump.dump(err_buff, errDump.TYPE_SYS) -- 开机手动读取一次系统异常日志
  23. if err_buff:used() > 0 then
  24. -- log.info(err_buff:toStr(0, err_buff:used())) -- 打印出异常日志
  25. -- 将数据data通过"ERRDUMP_DATA_SEND_UART"消息publish给串口发送出去
  26. sys.publish("ERRDUMP_DATA_SEND_UART", err_buff:toStr(0, err_buff:used()))
  27. -- 将读取到的系统异常日志通过"SEND_DATA_REQ"消息publish给tcp发送出去
  28. sys.publish("SEND_DATA_REQ", err_buff:toStr(0, err_buff:used()))
  29. --手动读取的话需要手动删除日志,否则下次读取会继续读取上次的日志
  30. log.info("读取完系统错误日志,删除系统错误日志")
  31. errDump.dump(nil, errDump.TYPE_SYS, true)
  32. end
  33. -- 开机读取完系统异常日志后循环读取用户调试日志
  34. while true do
  35. local new_flag = errDump.dump(err_buff, errDump.TYPE_USR)
  36. if err_buff:used() > 0 then
  37. log.info("errBuff", err_buff:toStr(0, err_buff:used()))
  38. -- 将数据data通过"ERRDUMP_DATA_SEND_UART"消息publish给串口发送出去
  39. sys.publish("ERRDUMP_DATA_SEND_UART", err_buff:toStr(0, err_buff:used()))
  40. -- 将读取到的用户调试日志通过"SEND_DATA_REQ"消息publish给tcp发送出去
  41. sys.publish("SEND_DATA_REQ", err_buff:toStr(0, err_buff:used()))
  42. --手动读取的话需要手动删除日志,否则下次读取会继续读取上次的日志
  43. log.info("读取完用户调试日志,删除用户调试日志")
  44. errDump.dump(nil, errDump.TYPE_USR, true)
  45. end
  46. sys.wait(15000)
  47. --写入用户的调试日志测试,注意最大只有4KB,超过部分新的覆盖旧的
  48. errDump.record("测试一下用户的调试日志记录功能")
  49. end
  50. end
  51. local function test_error_log() --故意写错用来触发系统异常日志记录
  52. sys.wait(60000)
  53. --故意写错代码死机
  54. lllllllllog.info("此处使用一个不存在的库文件,导致出现异常")
  55. end
  56. sys.taskInit(test_user_log) -- 启动errdemp测试任务
  57. sys.taskInit(test_error_log) --启动错误函数任务