embedlog:極致輕量的嵌入式日誌框架!
前言
最近做嵌入式調試,是不是老覺得日誌輸出又慢又佔空間?標準 printf、syslog、各種庫,啥都有,可要麼臃腫得像頭大象,要麼靈活性不給力。今天給大家安利一個 C89 寫的超輕量級日誌框架——em)bedlog,讓你的日誌輸出又快又小,還能隨心所欲多路輸出。
embedlog 是什麼?
簡單一句話:embedlog 是個專爲嵌入式和資源受限系統設計的日誌管理庫。
-
純 C89 實現,兼容性絕佳
-
編譯時可按需開啓 / 關閉功能,生成最小二進制
-
支持多種輸出:stderr、stdout、文件、串口、syslog(Nuttx)甚至自定義回調
-
可選精度的時間戳、文件 / 行 / 函數信息、ANSI 顏色、日誌輪轉、二進制日誌等
解決了哪些痛點?
你有沒有遇到過:
-
內存被日誌庫喫幹抹淨,一堆浮點、locale、寬字符真沒用
-
多任務打印互相打架,輸出信息亂序、亂碼
-
想同時輸出到文件、串口、調試終端,結果得寫 N 套 printf
-
日誌文件暴漲,沒有輪轉又自動刪不了
embedlog 一舉搞定:可編譯選項精簡代碼,多線程安全單行加鎖,多輸出流自動管理,文件輪轉隨心設。
核心功能亮點
使用示例
#include <embedlog.h>
intmain(void){
el_init();
el_set_timestamp(EL_TS_LONG, EL_TS_TM_REALTIME, EL_TS_FRACT_US);
el_print_extra_info(1);
el_enable_file_log("/tmp/log.txt",5,512*1024);
el_print(ELN,"日誌開始記錄,多路輸出 OK!");
el_print(ELF,"致命錯誤示例");
el_pmemory(ELN, some_buffer, buffer_len);
el_cleanup();
return0;
}
上面代碼會同時把日誌打到 stderr 和 /tmp/log.txt,自動輪轉 5 個文件,每個最大 512KB,還帶時間戳、文件 / 行信息。
優缺點對比
總結與推薦
embedlog 就像在你項目裏插了個開關:需要什麼日誌功能,就開哪個,性能、內存都給你最大留白。不管是深度嵌入式還是普通 C/C++ 應用,都能輕鬆上手,日誌管理從此不再臃腫。強烈建議給下個項目配上它,調試、監控、出問題追蹤都更省心!
項目地址: https/github.com/mlyszczek/embedlog
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/R0s9F_ZOayQjxTozaOEoyQ