前言
项目需求一套能本地存储日志的方案,用于上线后产生的bug可以有日志调查分析依据;最早使用的是adb logcat读出io流写入问题,但是性能确实开销很大,经调查腾讯的xlog性能很高,但是使用多有不便,现有提供api无法满足需求,本文主要记录讲述如何定制xlog。
需求梳理
1.文件头信息删除
2.单行日志格式化信息删除
3.提供非明文存储功能
4.写入中的单个文件大小校验
正文
1.文件头信息删除
默认每次运行前会打印大量头信息,看起来没什么参考价值,删之
void XloggerAppender::Open(const XLogConfig& _config) {
...
char mark_info[512] = {0};
__GetMarkInfo(mark_info, sizeof(mark_info));
//UQ remove head msg
if (buffer.Ptr()) {
//WriteTips2File("~~~~~ begin of mmap ~~~~~\n");
__Log2File(buffer.Ptr(), buffer.Length(), false);
//WriteTips2File("~~~~~ end of mmap ~~~~~%s\n", mark_info);
}
...
snprintf(logmsg, sizeof(logmsg), "get mmap time: %" PRIu64, (int64_t)get_mmap_time);
Write(nullptr, logmsg);
//UQ remove head msg
// Write(nullptr, &#