跳转至

日志输出

一、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 库具有基本的日志输出功能,通过灵活运用日志功能,开发者可以随时查看变量的数值或跟踪程序运行的逻辑顺序,非常适合嵌入式开发过程中用于调试,同时也方便长时间跟踪运行,排查问题。

二、演示功能概述

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

三、准备硬件环境

“古人云:‘工欲善其事,必先利其器。’在深入介绍本功能示例之前,我们首先需要确保以下硬件环境的准备工作已经完成。” 参考:硬件环境清单 - luatos@air8101 - 合宙文档中心,准备以及组装好硬件环境。

四、软件环境

四、准备软件环境

“凡事预则立,不预则废。”在详细阐述本功能示例之前,我们需先精心筹备好以下软件环境。

1. Luatools 工具

2. 内核固件文件(底层 core 固件文件):LuatOS-SoC_V10001_Air8101.soc;参考项目使用的内核固件

3. LuatOS 需要的脚本和资源文件 脚本和资源文件:https://gitee.com/openLuat/LuatOS-Air8101/tree/master/demo/log

lib 脚本文件:使用 Luatools 烧录时,勾选 添加默认 lib 选项,使用默认 lib 脚本文件;

准备好软件环境之后,接下来查看如何烧录项目文件到 Air8101 核心板,将本篇文章中演示使用的项目文件烧录到 Air8101 核心板中。

五、代码示例介绍

5.1 完整程序清单

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

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

--[[
本demo演示 log日志的基本操作
]]

sys = require("sys")


sys.taskInit(function ()
    sys.wait(1000) -- 延时一会儿,免得看不到日志
    local tmp

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

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

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

    --实验3:通过日志输出变量内容
    local myInteger = 42
        log.info("Integer", myInteger)       -- 输出myInteger变量值
end)
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!

5.2 观察输出

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

总结

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