Files
BR_YKC/4G/源代码/lib/log.lua
2026-05-21 13:24:05 +08:00

124 lines
3.9 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
--- 模块功能:系统日志记录,分级别日志工具
-- @module log
-- @author openLuat
-- @license MIT
-- @copyright openLuat
-- @release 2017.09.26
module(..., package.seeall)
-- 定义日志级别常量可在main入口全局指定
-- 例如: LOG_LEVEL=log.LOGLEVEL_WARN
LOG_SILENT = 0x00;
LOGLEVEL_TRACE = 0x01;
LOGLEVEL_DEBUG = 0x02;
LOGLEVEL_INFO = 0x03;
LOGLEVEL_WARN = 0x04;
LOGLEVEL_ERROR = 0x05;
LOGLEVEL_FATAL = 0x06;
-- 定义日志级别标签分别对应日志级别的1-6
local LEVEL_TAG = {'T', 'D', 'I', 'W', 'E', 'F'}
local PREFIX_FMT = "[%s]-[%s]"
--- 内部函数支持不同级别的log打印及判断
-- @param level 日志级别可选LOGLEVEL_TRACELOGLEVEL_DEBUG等
-- @param tag 模块或功能名称(标签),作为日志前缀
-- @param ... 日志内容,可变参数
-- @return nil
-- @usage _log(LOGLEVEL_TRACE,tag, 'log content')
-- @usage _log(LOGLEVEL_DEBUG,tag, 'log content')
local function _log(level, tag, ...)
-- INFO 作为默认日志级别
local OPENLEVEL = LOG_LEVEL and LOG_LEVEL or LOGLEVEL_INFO
-- 如果日志级别为静默,或设定级别更高,则不输出日志
if OPENLEVEL == LOG_SILENT or OPENLEVEL > level then return end
-- 日志打印输出
local prefix = string.format(PREFIX_FMT, LEVEL_TAG[level], type(tag)=="string" and tag or "")
print(prefix, ...)
-- TODO支持hookup例如对某级别日志做额外处理
-- TODO支持标签过滤
end
--- 输出trace级别的日志
-- @param tag 模块或功能名称,作为日志前缀
-- @param ... 日志内容,可变参数
-- @return nil
-- @usage log.trace('moduleA', 'log content')
function trace(tag, ...)
_log(LOGLEVEL_TRACE, tag, ...)
end
--- 输出debug级别的日志
-- @param tag 模块或功能名称,作为日志前缀
-- @param ... 日志内容,可变参数
-- @return nil
-- @usage log.debug('moduleA', 'log content')
function debug(tag, ...)
_log(LOGLEVEL_DEBUG, tag, ...)
end
--- 输出info级别的日志
-- @param tag 模块或功能名称,作为日志前缀
-- @param ... 日志内容,可变参数
-- @return nil
-- @usage log.info('moduleA', 'log content')
function info(tag, ...)
_log(LOGLEVEL_INFO, tag, ...)
end
--- 输出warn级别的日志
-- @param tag 模块或功能名称,作为日志前缀
-- @param ... 日志内容,可变参数
-- @return nil
-- @usage log.warn('moduleA', 'log content')
function warn(tag, ...)
_log(LOGLEVEL_WARN, tag, ...)
end
--- 输出error级别的日志
-- @param tag 模块或功能名称,作为日志前缀
-- @param ... 日志内容,可变参数
-- @return nil
-- @usage log.error('moduleA', 'log content')
function error(tag, ...)
_log(LOGLEVEL_ERROR, tag, ...)
end
--- 输出fatal级别的日志
-- @param tag 模块或功能名称,作为日志前缀
-- @param ... 日志内容,可变参数
-- @return nil
-- @usage log.fatal('moduleA', 'log content')
function fatal(tag, ...)
_log(LOGLEVEL_FATAL, tag, ...)
end
-- --- 开启或者关闭print的打印输出功能 --修复老版本波特率无法正常配置问题
-- -- @bool v false或nil为关闭其余为开启
-- -- @param uartid 输出Luatrace的端口1表示uart1,2表示uart2
-- -- @return nil
-- -- @usage log.openTrace(1,nil)
-- function openTrace(v, uartid, baudrate)
-- if uartid then
-- if v then
-- uart.setup(uartid, baudrate or 115200, 8, uart.PAR_NONE, uart.STOP_1)
-- else
-- uart.close(uartid)
-- end
-- end
-- rtos.set_trace(v and 1 or 0, uartid)
-- end
--- 开启或者关闭print的打印输出功能
-- @bool v false或nil为关闭其余为开启
-- @param uartid 输出Luatrace的端口1表示uart1,2表示uart2,3表示uart3
-- @baudrate 可修改串口波特率可选参数默认115200
-- @return nil
-- @usage log.openTrace(1,nil)
function openTrace(v, uartid, baudrate)
rtos.set_trace(v and 1 or 0, uartid,baudrate)
end