美文网首页
日志收集之xlog

日志收集之xlog

作者: kingandyoga | 来源:发表于2017-12-10 21:24 被阅读511次

    前言

    这是iOS日志搜集系列的第一篇文章。在这个系列中,我会从Crash收集,日志收集,日志反馈,用户操作收集等方面对iOS日志搜集做一个全面的介绍,手把手教你搭建一个iOS日志搜集系统。

    关于xlog

    xlog是腾讯mars下的高可靠性高性能的运行期日志组件。它的几个特点让我选择它来作为写日志,压缩日志的工具:

    • 稳定:引入mmap来保证高性能和高可靠性。
    • 压缩:使用流式压缩,减少日志文件体积。
    • 安全性:

    xlog的使用

    xlog的基本使用方法,我们可以参考官方的wiki。在打包的framework中,我们可以参考appender.h以及xloggerbase.h这两个头文件进行操作。

    appender.h
    // 打开日志文件,准备写入
    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();
    
    // 关闭日志文件
    void appender_close();
    
    // 设置日志模式
    void appender_setmode(TAppenderMode _mode);
    
    // 获取文件路径
    bool appender_getfilepath_from_timespan(int _timespan, const char* _prefix, std::vector<std::string>& _filepath_vec);
    
    // 设置写入文件名字
    bool appender_make_logfile_name(int _timespan, const char* _prefix, std::vector<std::string>& _filepath_vec);
    
    // 获取当前日志文件相关信息
    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的改进

    1. xlog中可以设置日志文件的大小,但是日志在10天后就会过期并被删除。在很多时候,如果我们需要获取更长时间之前的日志,就需要进行修改。
    2. xlog的后缀名默认为xlog,我在这里对它进行修改,我们可以自定义后缀名,防止被人获取。
    3. 此外我对xlog进行简单的再封装,一行代码进行配置,使用宏进行写日志。

    更多内容可以参考我的Github: https://github.com/kingandyoga/xlog-iOS

    相关文章

      网友评论

          本文标题:日志收集之xlog

          本文链接:https://www.haomeiwen.com/subject/rlivixtx.html