当前位置: 首页 > news >正文

全栈工程师实战手册:LuatOS日志系统开发指南!

本文聚焦LuatOS-log库的实战应用场景,通过完整案例演示日志模块集成、格式定制及远程同步方案,帮助全栈开发者构建灵活可靠的日志管理框架。下面,我们一起来认识LuatOS的log库!


一、 log.info()   

log info()主要打印一些正常的信息。比如,记录程序的启动信息、某个模块的初始化完成、重要业务流程的执行等。 

我们利用log.info(),可以清晰了解程序的执行顺序。

tag为日志标识,标识日志来自哪个模块或功能。

比如:在一个包含多个子系统的应用程序中,为每个子系统的日志添加相应的标签,开发人员就能快速定位到问题所在的模块。

在一个复杂的Lua脚本里,使用log.info() 函数在关键代码位置,设置输出信息,就能知道程序是否按预期顺序执行。

如果你想在程序开头看是否会记录到模块初始化,代码可以这样写:

当模块完成初始化,就能在日志打印里看到相关信息了。

二、  log.debug()  

log.debug()主要用在开发和调试阶段,记录详细的调试信息。

这些信息方便我们理解程序的执行流程、变量的变化。在开发完成后,可以根据需要关闭这些调试信息,以减少日志量和提高性能。 

具体使用场景如下:

当程序执行到log.debug("进入add函数,a = ".. a.. ", b = ".. b)时,它会输出一条日志,明确显示程序已经进入了add函数。

三、log.warn()  

log.warn()主要用于记录一些警告信息,表示程序遇到了一些可能存在潜在的风险,还没有导致程序出错,但可能需要我们关注的部分。 

比如:当文件大小超过1MB,你想输出一条警告信息提醒用户,你就可以在代码中使用log.warn()。

当文件大小超过1MB时,程序就会执行log.warn()这行代码,输出一条警告信息,提醒开发者注意下文件大小。

四、  log.error()  

log.error()主要用于记录错误信息,当程序发生错误或异常情况时,使用这个函数来记录相关的错误信息,以便开发者能够快速定位和解决问题。 

具体应用场景:

当除数为0时,输出错误信息:除数不能为0。

 

五、log.setLevel()

以上是我们常用到的几种日志类型。但有时候,debug是调试时用到的,并不想让用户看到我们的debug类型日志,难道要一个一个删除吗? 

不用!我们可以用log.setLevel()函数设置日志级别。

在LuatOS的log库中,日志有如下几种类型:

LOG_SILENT(无日志模式)

LOG_DEBUG(debug日志模式)

LOG_INFO(info日志模式)

LOG_WARN(warning日志模式)

LOG_ERROR(error日志模式)

日志级别从低到高依次为:DEBUG < INFO < WARN < ERROR

只有日志级别大于或等于当前设置的级别时,该日志才会被输出。

比如日志设置为INFO级别时:DEBUG级别的日志不会输出,而INFO、WARN、ERROR级别的日志会输出。 

比如:想设置为INFO日志模式,不要输出debug日志信息,代码就这样写:

其余模式同理。

六、log.getLevel()

如果想要获取到当前设置的日志级别,我们就需要用到 log.getLevel()函数。

示例如下:


七、log.style()  

设置日志风格,需要使用到log.style(val)函数。 

LuatOS的log库提供了3种日志风格,分别为:默认风格0;调试风格1;调试风格2。

这几种方式的日志呈现形式不同,根据个人习惯调整。

示例如下:

以log.info("ABC", "DEF", 123) 为例, 假设该代码位于main.lua的12行。

那么三种风格的输出样式为:

默认风格0的输出样式为:I/user.ABC DEF 123

调试风格1的输出样式为:I/main.lua:12 ABC DEF 123

对比默认风格0,增加了文件名和代码所在行数。

调试风格2的输出样式为:I/user.ABC main.lua:12 DEF 123

对比其他风格,信息位置排放有所区别。

关于log库的内容就分享到这里了~

相关文章:

  • C 语言_可变参数宏详解
  • temu自养号采购如何解决多账号防关联问题
  • (done) 补充:xv6 的一个用户程序 init 是怎么启动的 ?它如何启动第一个 bash ?
  • ARM64内核内存空间布局
  • The 2024 Sichuan Provincial Collegiate Programming Contest部分题解(L,H,E,B,I)
  • Ethereum Pectra 的升级
  • TWASandGWAS中GBS filtering and GWAS(1)
  • 《Flutter社交应用暗黑奥秘:模式适配与色彩的艺术》
  • 使用PhpStudy搭建Web测试服务器
  • 每日一题洛谷P8662 [蓝桥杯 2018 省 AB] 全球变暖c++
  • Ubuntu20.04 搭建Kubernetes 1.28版本集群
  • WSL 安装 Debian 12 后,Linux 如何安装 redis ?
  • C#WPF里不能出现滚动条的原因
  • SysAid On-Prem XML注入漏洞复现(CVE-2025-2776)
  • 栈和队列复习(C语言版)
  • Java笔记4
  • Go语言即时通讯系统 开发日志day1
  • OpenCV CUDA 模块中在 GPU 上对图像或矩阵进行 翻转(镜像)操作的一个函数 flip()
  • beyond compare 免密钥进入使用(删除注册表)
  • 信息安全模型全解:从机密性到完整性的理论基石
  • 著名军旅作家、文艺评论家周政保逝世,享年77岁
  • 体坛联播|穆勒主场完成拜仁谢幕战,山西车队再登环塔拉力赛
  • 中美经贸高层会谈在瑞士日内瓦开始举行
  • 国常会:研究深化国家级经济技术开发区改革创新有关举措等
  • 丹麦召见美外交官,强调“不能容忍”美在格陵兰岛间谍活动
  • 多人称华为手机忽现拍照模糊疑存缺陷,售后回应:主摄像头故障