跳转至

日志输出

一、LuatOS 日志输出介绍

LuatOS 使用 log 库是进行日志输出,通过 log 库可以输出不同等级的用户日志;

1.1 日志的等级

debug:调试内容输出,为日志输出优先级第 4 等级,优先级最低;

info:信息输出,为日志输出优先级第 3 等级,仅比 debug 级别高;

warn:为警告输出,为日志输出优先级第 2 等级;

error:为错误输出,为日志输出优先级第 1 等级,级别最高;

注:LuatOS 默认日志等级是 debug,可以输出 debug 及以上等级的日志;

如:log.debug(PROJECT, "debug message"),debug 为 log 模块的函数,使用小写英文字母;

1.2 日志输出等级

SILENT: 静默所有日志,即禁止日志有任何内容输出;

DEBUG: 输出 debug 级及以上级别的日志

INFO: 输出 info 级及以上级别的日志

WARN: 输出 warn 级及以上级别的日志

ERROR: 输出 error 级的日志

如:log.setLevel("INFO"),INFO 作为 setLevel 函数的参数存在,使用大写英文字母;

注:debug 小写与 DEBUG 大写(其他以此类比)具有不同作用,使用过程要注意!

综上所述,LuatOS 的 log 库具有基本的日志输出功能,通过灵活运用日志功能,开发者可以随时查看变量的数值或跟踪程序运行的逻辑顺序,非常适合嵌入式开发过程中用于调试,同时也方便长时间跟踪运行,排查问题。

二、演示功能概述

本文使用 Air700ECQ 开发板,输出不同等级,以便开发者能快速了解日志功能的使用。

三、准备硬件环境

3.1 Air700ECQ 开发板

使用 Air700ECQ 开发板,如下图所示:

淘宝购买链接:Air700ECQ 开发板淘宝购买链接

此开发板的详细使用说明参考:Air700ECQ 产品手册 中的 《开发板EVB-Air700ECQ-IO使用手册VX.X.X.pdf》,写这篇文章时最新版本的使用说明为:开发板EVB-Air700ECQ-IO使用手册V1.0.0.pdf ;开发板使用过程中遇到任何问题,可以直接参考这份使用说明 pdf 文档。

3.2 TYPE-C 数据线

购买链接(注意:必须是具备USB通信的数据线!)

四、准备软件环境

4.1 Luatools

Luatools 日志打印与程序烧录软件下载

4.2 core 固件和源码脚本

注:core 固件,是基础环境,该固件由合宙官方提供,用户不可修改;源码脚本,为应用程序,可由客户自行修改; 右键点我,另存为,下载完整压缩文件包

五、软硬件资料

1、Air700ECQ 开发板原理图,打开 Air700ECQ 产品手册 ,访问页面中的 《EVB_Air780X_V1.6.zip

2、API 使用介绍说明

3、Air700ECQ 开发板使用说明,打开 Air700ECQ 产品手册 ,访问页面中的 《开发板EVB-Air700ECQ-IO使用手册VX.X.X.pdf》,写这篇文章时最新版本的使用说明为:开发板EVB-Air700ECQ-IO使用手册V1.0.0.pdf

5.1 开发板按钮与指示灯图示与说明

5.2 硬件安装与连接

5.2.1 SIM 卡安装

5.2.2 实物连接图

注:开发板与电脑通过 TYPE-C 线连接,用于通信与供电,所以必须使用支持 USB 通信的 TYPE-C 线才可以;

六、代码示例介绍

6.1 完整程序清单

注:完整复制后保存为 main.lua,可直接使用

-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "LOG"
VERSION = "2.0.0"

--[[
本demo演示 string字符串的基本操作
1\. lua的字符串是带长度, 这意味着, 它不依赖0x00作为结束字符串, 可以包含任意数据
2\. lua的字符串是不可变的, 就不能直接修改字符串的一个字符, 修改字符会返回一个新的字符串
]]

-- sys库是标配
_G.sys = require("sys")

-- Air780E的AT固件默认会为开机键防抖, 导致部分用户刷机很麻烦
if rtos.bsp() == "EC618" and pm and pm.PWK_MODE then
    pm.power(pm.PWK_MODE, false)
end

local netLed = require("netLed")
--GPIO18配置为输出,默认输出低电平,可通过setGpio18Fnc(0或者1)设置输出电平
local LEDA= gpio.setup(27, 0, gpio.PULLUP)

sys.taskInit(function ()
    sys.wait(1000) -- 免得看不到日志
    local tmp

        --实验1:输出四个等级的日志,日志等级排序从低到高为 debug < info < warn < error
        log.debug(PROJECT, "debug message")
        log.info(PROJECT, "info message")
        log.warn(PROJECT, "warn message")
        log.error(PROJECT, "error message")


        --实验2:输出INFO及更高级别日志,即debug日志不输出
        log.setLevel("INFO")
        print(log.getLevel())

        -- 这条debug级别的日志不会输出
        log.debug(PROJECT, "debug message")
        log.info(PROJECT, "info message")
        log.warn(PROJECT, "warn message")
        log.error(PROJECT, "error message")

        --实验3:通过日志输出变量内容
        local myInteger = 42
    log.info("Integer", myInteger)
end)
-- 这里演示4G模块上网后,会自动点亮网络灯,方便用户判断模块是否正常开机
sys.taskInit(function()
    while true do
        sys.wait(6000)
                if mobile.status() == 1 then
                        gpio.set(27, 1)  
                else
                        gpio.set(27, 0) 
                        mobile.reset()
        end
    end
end)
-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!

七、功能验证

7.1 开机

按下图所示通过 TYPE-C 线将开发板与电脑连接无误后,开发板电源指示红灯常亮,网络指示灯灭:

此时按下开机键,约 2 秒后释放,等待几秒网络指示绿灯常亮,即开机成功,如下图:

此时电脑设备管理器中会发现下图所示几个设备,即代表开机成功!

7.2 打开 Luatool 软件工具并进入项目管理测试页面

7.3 按序号步骤创建项目

7.4 按如下步骤进行程序烧录

7.5 观察下载过程后确认烧录结果

7.6 关闭项目管理界面,回到调试页面,观察输出

注:详细日志输出内容,在程序中有增强注释说明,请详细查看。

总结

至此,我们已使用 Air700ECQ 开发板验证了 LuatOS 所有日志功能。

<!-- ## 给读者的话

本篇文章由肇朔开发;

本篇文章描述的内容,如果有错误、细节缺失、细节不清晰或者其他任何问题,总之就是无法解决您遇到的问题;

请登录合宙技术交流论坛,点击文档找错赢奖金-Air700ECQ-LuatOS-软件指南-通用工具库-日志输出

用截图标注+文字描述的方式跟帖回复,记录清楚您发现的问题;

我们会迅速核实并且修改文档;

同时也会为您累计找错积分,您还可能赢取月度找错奖金! -->