本文將帶你深入探索LuatOS系統(tǒng)中l(wèi)og庫的核心原理與實(shí)戰(zhàn)技巧,通過代碼示例解析日志管理、錯(cuò)誤追蹤及性能優(yōu)化的最佳實(shí)踐,助力全棧工程師構(gòu)建更穩(wěn)健的物聯(lián)網(wǎng)應(yīng)用。
今天,我們一起來認(rèn)識LuatOS的log庫!

一、 log.info()
log info()主要打印一些正常的信息。比如,記錄程序的啟動信息、某個(gè)模塊的初始化完成、重要業(yè)務(wù)流程的執(zhí)行等。
我們利用log.info(),可以清晰了解程序的執(zhí)行順序。

tag為日志標(biāo)識,標(biāo)識日志來自哪個(gè)模塊或功能。
比如:在一個(gè)包含多個(gè)子系統(tǒng)的應(yīng)用程序中,為每個(gè)子系統(tǒng)的日志添加相應(yīng)的標(biāo)簽,開發(fā)人員就能快速定位到問題所在的模塊。
在一個(gè)復(fù)雜的Lua腳本里,使用log.info() 函數(shù)在關(guān)鍵代碼位置,設(shè)置輸出信息,就能知道程序是否按預(yù)期順序執(zhí)行。
如果你想在程序開頭看是否會記錄到模塊初始化,代碼可以這樣寫:

當(dāng)模塊完成初始化,就能在日志打印里看到相關(guān)信息了。
二、 log.debug()
log.debug()主要用在開發(fā)和調(diào)試階段,記錄詳細(xì)的調(diào)試信息。
這些信息方便我們理解程序的執(zhí)行流程、變量的變化。在開發(fā)完成后,可以根據(jù)需要關(guān)閉這些調(diào)試信息,以減少日志量和提高性能。

具體使用場景如下:

當(dāng)程序執(zhí)行到log.debug("進(jìn)入add函數(shù),a = ".. a.. ", b = ".. b)時(shí),它會輸出一條日志,明確顯示程序已經(jīng)進(jìn)入了add函數(shù)。
三、log.warn()
log.warn()主要用于記錄一些警告信息,表示程序遇到了一些可能存在潛在的風(fēng)險(xiǎn),還沒有導(dǎo)致程序出錯(cuò),但可能需要我們關(guān)注的部分。

比如:當(dāng)文件大小超過1MB,你想輸出一條警告信息提醒用戶,你就可以在代碼中使用log.warn()。

當(dāng)文件大小超過1MB時(shí),程序就會執(zhí)行l(wèi)og.warn()這行代碼,輸出一條警告信息,提醒開發(fā)者注意下文件大小。
四、 log.error()
log.error()主要用于記錄錯(cuò)誤信息,當(dāng)程序發(fā)生錯(cuò)誤或異常情況時(shí),使用這個(gè)函數(shù)來記錄相關(guān)的錯(cuò)誤信息,以便開發(fā)者能夠快速定位和解決問題。

具體應(yīng)用場景:

當(dāng)除數(shù)為0時(shí),輸出錯(cuò)誤信息:除數(shù)不能為0。
五、log.setLevel()
以上是我們常用到的幾種日志類型。但有時(shí)候,debug是調(diào)試時(shí)用到的,并不想讓用戶看到我們的debug類型日志,難道要一個(gè)一個(gè)刪除嗎?
不用!我們可以用log.setLevel()函數(shù)設(shè)置日志級別。
在LuatOS的log庫中,日志有如下幾種類型:
LOG_SILENT(無日志模式)
LOG_DEBUG(debug日志模式)
LOG_INFO(info日志模式)
LOG_WARN(warning日志模式)
LOG_ERROR(error日志模式)
日志級別從低到高依次為:DEBUG < INFO < WARN < ERROR
只有日志級別大于或等于當(dāng)前設(shè)置的級別時(shí),該日志才會被輸出。
比如日志設(shè)置為INFO級別時(shí):DEBUG級別的日志不會輸出,而INFO、WARN、ERROR級別的日志會輸出。

比如:想設(shè)置為INFO日志模式,不要輸出debug日志信息,代碼就這樣寫:

其余模式同理。
六、log.getLevel()
如果想要獲取到當(dāng)前設(shè)置的日志級別,我們就需要用到 log.getLevel()函數(shù)。

示例如下:

七、log.style()
設(shè)置日志風(fēng)格,需要使用到log.style(val)函數(shù)。
LuatOS的log庫提供了3種日志風(fēng)格,分別為:默認(rèn)風(fēng)格0;調(diào)試風(fēng)格1;調(diào)試風(fēng)格2。
這幾種方式的日志呈現(xiàn)形式不同,根據(jù)個(gè)人習(xí)慣調(diào)整。

示例如下:

以log.info("ABC", "DEF", 123) 為例, 假設(shè)該代碼位于main.lua的12行。
那么三種風(fēng)格的輸出樣式為:
默認(rèn)風(fēng)格0的輸出樣式為:I/user.ABC DEF 123
調(diào)試風(fēng)格1的輸出樣式為:I/main.lua:12 ABC DEF 123
對比默認(rèn)風(fēng)格0,增加了文件名和代碼所在行數(shù)。
調(diào)試風(fēng)格2的輸出樣式為:I/user.ABC main.lua:12 DEF 123
對比其他風(fēng)格,信息位置排放有所區(qū)別。
關(guān)于log庫的內(nèi)容就分享到這里了~
審核編輯 黃宇
-
Log
+關(guān)注
關(guān)注
0文章
16瀏覽量
11521 -
LuatOS
+關(guān)注
關(guān)注
0文章
99瀏覽量
2208
發(fā)布評論請先 登錄
野火STM32庫開發(fā)實(shí)戰(zhàn)指南 火哥的書 開賣了
【圖書分享】《STM32庫開發(fā)實(shí)戰(zhàn)指南》
stm32的庫開發(fā)實(shí)戰(zhàn)指南
求STM32庫開發(fā)實(shí)戰(zhàn)指南.........
《STM32 HAL 庫開發(fā)實(shí)戰(zhàn)指南—基于H750》
如何對STM32F10x標(biāo)準(zhǔn)庫開發(fā)進(jìn)行概覽
LabVIEW入門與實(shí)戰(zhàn)開發(fā)100例
STM32庫開發(fā)實(shí)戰(zhàn)指南
javaweb從入門到實(shí)戰(zhàn)
LuatOS開發(fā)之4G模組隨機(jī)數(shù)(random)|實(shí)戰(zhàn)指南

爬蟲數(shù)據(jù)獲取實(shí)戰(zhàn)指南:從入門到高效采集
快速入門——LuatOS:sys庫多任務(wù)管理實(shí)戰(zhàn)攻略!

評論