1 日志功能(log)
作者:王世豪 | 最后修改:2026-08-18
一、log概述
log 库是 LuatOS 提供的日志输出核心库,用于在开发调试过程中向串口输出各种级别的日志信息。通过 log 库,开发者可以方便地输出 debug、info、warn、error 四个等级的日志,并根据实际需要动态调整日志的输出等级,从而在调试阶段获得足够详细的运行信息,在正式发布阶段减少不必要的日志输出,提升系统运行效率。
Air724UG 模组基于展锐 8910 平台,运行 LuatOS 操作系统,log 库作为核心库直接编译进内核固件中,开发者无需额外加载扩展库,直接在脚本中调用 log.debug、log.info、log.warn、log.error 等接口即可完成日志输出,使用非常方便。
log 库支持通过 log.setLevel 接口动态调整日志输出等级,支持 DEBUG、INFO、WARN、ERROR、SILENT 五种等级设置,同时还支持一次输出多个不同类型的参数(数值、布尔值、表等),极大地方便了开发调试过程中的信息打印。
二、演示功能概述
本 demo 演示 log 库的日志输出等级控制功能,核心逻辑为:
-
打印当前默认日志输出等级;
-
通过 log.setLevel 依次设置 INFO、WARN、ERROR、SILENT 等级,并分别输出 debug、info、warn、error 四种日志,观察不同等级设置下的日志输出效果;
-
恢复默认日志输出等级,验证日志输出功能恢复;
-
测试一次输出多个不同类型参数(数值、布尔值、表)的日志打印效果。
通过本 demo,开发者可以直观地理解 log 库各日志等级的含义以及 log.setLevel 接口的使用方法。
三、准备硬件环境
1、Air724UG核心板一块

2、TYPE-C USB数据线一根
3、Air724UG核心板和数据线的硬件接线方式为
-
Air724UG核心板通过TYPE-C USB口连接TYPE-C USB 数据线,数据线的另外一端连接电脑的USB口;
-
Air724UG核心板通过TYPE-C USB口供电;
Air724UG 核心板购买链接:合宙官方淘宝店铺
四、准备软件环境
4.1 软件环境
在开始实践本示例之前,先筹备一下软件环境:
1、烧录工具:Luatools 下载调试工具
2、本demo开发测试时使用的固件为Air724 LuatOS固件,本demo对固件版本没有什么特殊要求,所以你如果要测试本demo时,可以直接使用最新版本的内核固件;如果发现最新版本的内核固件测试有问题,可以使用我们开发本demo时使用的内核固件版本来对比测试;
3、脚本文件:https://gitee.com/openLuat/LuatOS/tree/master/module/Air724/demo/log
4、lib脚本文件:使用Luatools烧录时,勾选 添加默认lib 选项,使用默认lib脚本文件
准备好软件环境之后,接下来查看如何烧录项目文件到Air724UG核心板,将本篇文章中演示使用的项目文件烧录到Air724UG核心板中。
4.2 API 介绍
log库:https://docs.openluat.com/osapi/core/log/
五、程序结构
log/
│── main.lua
│── log_test.lua
│── readme.md
5.1 文件说明
-
main.lua:主程序入口文件,负责定义项目名和版本号、加载业务模块,最后调用sys.run()启动 LuatOS 运行框架。 -
log_test.lua:日志功能测试模块,演示 Air724UG 的日志输出功能。
六、代码详解
6.1 main.lua
主程序文件 main.lua 是整个项目的入口点。它负责定义 PROJECT 和 VERSION 变量、打印项目信息、加载业务模块,最后调用 sys.run() 启动 LuatOS 运行框架。
-- 定义项目名和项目版本号,Luatools工具和远程升级功能会用到
PROJECT = "logdemo"
VERSION = "001.999.000"
-- 打印项目名和项目版本号
log.info("main", "project name is ", PROJECT, "version is ", VERSION)
-- 加载 log_test 功能模块
require "log_test"
-- 结尾总是这一句
sys.run()
6.2 log_test.lua
log_test.lua 是日志功能测试模块,演示 Air724UG 的日志输出功能。
6.2.1 日志输出函数
test_log_output 函数用于输出当前日志级别下的四种日志,便于观察不同日志等级设置下的输出效果:
local function test_log_output(level_name)
print(string.format("测试日志级别: %s", level_name))
log.debug(PROJECT, "debug message")
log.info(PROJECT, "info message")
log.warn(PROJECT, "warn message")
log.error(PROJECT, "error message")
end
6.2.2 日志等级测试任务
logtest_task 任务函数依次进行六组实验,分别验证默认等级、INFO、WARN、ERROR、SILENT 等级下的日志输出效果,最后恢复默认等级并测试多参数类型输出:
local function logtest_task()
-- 打印当前默认日志输出等级
local default_level = log.getLevel()
print("日志功能测试开始")
print(string.format("默认日志级别: %s", default_level))
-- 实验1:使用默认日志输出等级测试
test_log_output(default_level)
-- 实验2:设置为INFO级别,只输出info及以上级别的日志
log.setLevel("INFO")
test_log_output("INFO")
-- 实验3:设置为WARN级别,只输出warn及以上级别的日志
log.setLevel("WARN")
test_log_output("WARN")
-- 实验4:设置为ERROR级别,只输出error级别的日志
log.setLevel("ERROR")
test_log_output("ERROR")
-- 实验5:设置为SILENT级别,完全关闭日志输出
log.setLevel("SILENT")
test_log_output("SILENT")
-- 实验6:恢复默认日志输出等级,验证日志输出恢复
log.setLevel(default_level)
print("恢复默认日志输出等级: " .. log.getLevel())
-- 测试不同参数类型的日志输出
log.info(PROJECT, "数值:", 123, "布尔值:", true, "表:", {name="test", value=456})
end
-- 启动测试任务
sys.taskInit(logtest_task)
七、运行结果展示
出现类似于下面的日志,就表示运行成功:
[2025-10-25 15:49:25.278][000000000.654] I/user.main project name is logdemo version is 001.999.000
[2025-10-25 15:49:26.074][000000001.663] 日志功能测试开始
[2025-10-25 15:49:26.079][000000001.663] 默认日志级别: 1
[2025-10-25 15:49:26.084][000000001.663] 测试日志级别: 1
[2025-10-25 15:49:26.089][000000001.664] D/user.logdemo debug message
[2025-10-25 15:49:26.094][000000001.664] I/user.logdemo info message
[2025-10-25 15:49:26.097][000000001.664] W/user.logdemo warn message
[2025-10-25 15:49:26.102][000000001.664] E/user.logdemo error message
[2025-10-25 15:49:26.105][000000001.665] 测试日志级别: INFO
[2025-10-25 15:49:26.108][000000001.665] I/user.logdemo info message
[2025-10-25 15:49:26.111][000000001.665] W/user.logdemo warn message
[2025-10-25 15:49:26.114][000000001.665] E/user.logdemo error message
[2025-10-25 15:49:26.117][000000001.665] 测试日志级别: WARN
[2025-10-25 15:49:26.122][000000001.666] W/user.logdemo warn message
[2025-10-25 15:49:26.125][000000001.666] E/user.logdemo error message
[2025-10-25 15:49:26.128][000000001.666] 测试日志级别: ERROR
[2025-10-25 15:49:26.131][000000001.666] E/user.logdemo error message
[2025-10-25 15:49:26.135][000000001.667] 测试日志级别: SILENT
[2025-10-25 15:49:26.139][000000001.667] 恢复默认日志级别: 1
[2025-10-25 15:49:26.142][000000001.667] I/user.logdemo 数值: 123 布尔值: true 表: table: 0C7F6DC8
从日志中可以看到:
-
默认日志等级下,debug、info、warn、error 四种日志全部输出;
-
设置为 INFO 等级后,debug 日志不再输出,info、warn、error 日志正常输出;
-
设置为 WARN 等级后,只有 warn、error 日志输出;
-
设置为 ERROR 等级后,只有 error 日志输出;
-
设置为 SILENT 等级后,所有日志均不输出;
-
恢复默认等级后,日志输出功能恢复正常。
八、总结
通过本文学习,你可以学习到 log 库的日志输出等级控制方法,掌握 log.debug、log.info、log.warn、log.error 四种日志输出接口以及 log.setLevel、log.getLevel 等级设置接口的使用方法,了解 SILENT 静默等级的用途,为后续学习更加复杂的业务逻辑打下基础。