||
突破基礎應用,本教程聚焦log庫的異步日志處理、動態配置及多線程安全機制,通過代碼示例展示如何應對復雜場景下的日志管理挑戰。
今天,我們一起來認識LuatOS的log庫!
log info()主要打印一些正常的信息。比如,記錄程序的啟動信息、某個模塊的初始化完成、重要業務流程的執行等。
我們利用log.info(),可以清晰了解程序的執行順序。
tag為日志標識,標識日志來自哪個模塊或功能。
比如:在一個包含多個子系統的應用程序中,為每個子系統的日志添加相應的標簽,開發人員就能快速定位到問題所在的模塊。
在一個復雜的Lua腳本里,使用log.info() 函數在關鍵代碼位置,設置輸出信息,就能知道程序是否按預期順序執行。
如果你想在程序開頭看是否會記錄到模塊初始化,代碼可以這樣寫:
當模塊完成初始化,就能在日志打印里看到相關信息了。
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。
以上是我們常用到的幾種日志類型。但有時候,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(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庫的內容就分享到這里了~