日志收集之xlog

前言

這是iOS日志搜集系列的第一篇文章。在這個(gè)系列中,我會從Crash收集,日志收集,日志反饋,用戶操作收集等方面對iOS日志搜集做一個(gè)全面的介紹,手把手教你搭建一個(gè)iOS日志搜集系統(tǒng)。

關(guān)于xlog

xlog是騰訊mars下的高可靠性高性能的運(yùn)行期日志組件。它的幾個(gè)特點(diǎn)讓我選擇它來作為寫日志,壓縮日志的工具:

  • 穩(wěn)定:引入mmap來保證高性能和高可靠性。
  • 壓縮:使用流式壓縮,減少日志文件體積。
  • 安全性:

xlog的使用

xlog的基本使用方法,我們可以參考官方的wiki。在打包的framework中,我們可以參考appender.h以及xloggerbase.h這兩個(gè)頭文件進(jìn)行操作。

appender.h
// 打開日志文件,準(zhǔn)備寫入
void appender_open(TAppenderMode _mode, const char* _dir, const char* _nameprefix, const char* _pub_key);
void appender_open_with_cache(TAppenderMode _mode, const std::string& _cachedir, const std::string& _logdir, const char* _nameprefix, const char* _pub_key);

// 將日志緩存寫入日志文件
void appender_flush();
void appender_flush_sync();

// 關(guān)閉日志文件
void appender_close();

// 設(shè)置日志模式
void appender_setmode(TAppenderMode _mode);

// 獲取文件路徑
bool appender_getfilepath_from_timespan(int _timespan, const char* _prefix, std::vector<std::string>& _filepath_vec);

// 設(shè)置寫入文件名字
bool appender_make_logfile_name(int _timespan, const char* _prefix, std::vector<std::string>& _filepath_vec);

// 獲取當(dāng)前日志文件相關(guān)信息
bool appender_get_current_log_path(char* _log_path, unsigned int _len);
bool appender_get_current_log_cache_path(char* _logPath, unsigned int _len);
xloggerbase.h
// 打印日志
void        xlogger_VPrint(const XLoggerInfo* _info, const char* _format, va_list _list);
void        xlogger_Print(const XLoggerInfo* _info, const char* _format, ...);

// 寫日志
void        xlogger_Write(const XLoggerInfo* _info, const char* _log);
void        xlogger_Wirte(const char* _log);

xlog的改進(jìn)

  1. xlog中可以設(shè)置日志文件的大小,但是日志在10天后就會過期并被刪除。在很多時(shí)候,如果我們需要獲取更長時(shí)間之前的日志,就需要進(jìn)行修改。
  2. xlog的后綴名默認(rèn)為xlog,我在這里對它進(jìn)行修改,我們可以自定義后綴名,防止被人獲取。
  3. 此外我對xlog進(jìn)行簡單的再封裝,一行代碼進(jìn)行配置,使用宏進(jìn)行寫日志。

更多內(nèi)容可以參考我的Github: https://github.com/kingandyoga/xlog-iOS

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容