日志输出
一、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 库具有基本的日志输出功能,通过灵活运用日志功能,开发者可以随时查看变量的数值或跟踪程序运行的逻辑顺序,非常适合嵌入式开发过程中用于调试,同时也方便长时间跟踪运行,排查问题。
二、演示功能概述
本文使用 Air780EP 核心板,输出不同等级,以便开发者能快速了解日志功能的使用。
三、硬件准备
参考:硬件环境清单第二章节内容,准备以及组装好硬件环境。
四、软件环境
“凡事预则立,不预则废。”在详细阐述本功能示例之前,我们需先精心筹备好以下软件环境。
1. Luatools工具;
2. 内核固件文件(底层core固件文件):LuatOS-SoC_V2002_Air780EP;参考项目使用的内核固件;
3. luatos需要的脚本和资源文件
脚本和资源文件右键点我,另存为,下载完整压缩文件包
lib脚本文件:使用Luatools烧录时,勾选 添加默认lib 选项,使用默认lib脚本文件;
准备好软件环境之后,接下来查看如何烧录项目文件到Air780EP核心板,将本篇文章中演示使用的项目文件烧录到Air780EP核心板中。
五、代码示例介绍
5.1 完整程序清单
注:完整复制后保存为 main.lua,可直接使用
-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "LOG"
VERSION = "2.0.0"
--[[
本demo演示 log日志的基本操作
]]
-- sys库是标配
_G.sys = require("sys")
-- Air780EP的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()之后后面不要加任何语句!!!!!
5.2 观察输出
注:详细日志输出内容,在程序中有增强注释说明,请详细查看。
总结
至此,我们已使用 Air780EP 开发板验证了 LuatOS 所有日志功能。
给读者的话
本篇文章由
肇朔
开发;本篇文章描述的内容,如果有错误、细节缺失、细节不清晰或者其他任何问题,总之就是无法解决您遇到的问题;
请登录合宙技术交流论坛,点击文档找错赢奖金-Air780EP-LuatOS-软件指南-通用工具库-日志输出
用截图标注+文字描述的方式跟帖回复,记录清楚您发现的问题;
我们会迅速核实并且修改文档;
同时也会为您累计找错积分,您还可能赢取月度找错奖金!