分享一种日志滚动覆盖的方法

举报
嵌入式大杂烩 发表于 2022/04/30 23:57:54 2022/04/30
【摘要】 大家好,我是杂烩君。 祝各位假期愉快! 今天看一篇短小的技术文~ 上次分享了分享嵌入式软件调试方法及几个有用的工具!。 其中有简单提到log滚动覆盖,就有小伙伴来问怎么做log滚动覆盖,本篇文章我们就来介绍一种log滚动覆盖的方法。 其实,我们之前有分享过的,大家可能没注意。 我们之前的周记嵌入式大杂烩周记 | 第...

大家好,我是杂烩君。

祝各位假期愉快!

24997999f68cbcbfc4563d705ced24a0.gif

今天看一篇短小的技术文~

上次分享了分享嵌入式软件调试方法及几个有用的工具!

其中有简单提到log滚动覆盖,就有小伙伴来问怎么做log滚动覆盖,本篇文章我们就来介绍一种log滚动覆盖的方法。

其实,我们之前有分享过的,大家可能没注意。

我们之前的周记嵌入式大杂烩周记 | 第 7 期 : zlog 的zlog这个开源日志库就具备这个功能。

这里我们来简单地演示一下。

例子:


   
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include "zlog.h"
  4. int main(int argc, char** argv)
  5. {
  6.  int rc;
  7.  zlog_category_t *zc;
  8.  rc = zlog_init("test.conf");
  9.  if (rc) 
  10.  {
  11.   printf("init failed\n");
  12.   return -1;
  13.  }
  14.  zc = zlog_get_category("my_cat");
  15.  if (!zc) 
  16.  {
  17.   printf("get cat fail\n");
  18.   zlog_fini();
  19.   return -2;
  20.  }
  21.  zlog_info(zc, "微信公众号:嵌入式大杂烩");
  22.  int i = 0;
  23.  while (1)
  24.  {
  25.   zlog_info(zc, "hello, zlog, %d", i++);
  26.   usleep(1000);
  27.  }
  28.  zlog_fini();
  29.  
  30.  return 0;
  31. }

zlog的配置文件test.conf:


   
  1. [formats]
  2. simple = "%d.%us %m%n"
  3. [rules]
  4. my_cat.INFO "./log/demo.log",1KB*5~"./log/demo.log.#r";simple

上面标明当log存储超过1KB时,则存放到另一个文件,在5个文件来回循环,r代表逆序,如先存满demo.log4,再存demo.log3。

编译:

gcc test.c -o test_zlog -I ./build_x86/include -L ./build_x86/lib/ -lzlog -lpthread
  

运行得到:

fabb488ad0d9c94a31f8cab92f54661e.png

8f21a36cf61050dcbe502f46ae082e76.png

log分为了几份,看log的时候也不是很方便呀?

为了方便分析,我们可以写个简单的shell脚本把log进行合并:


   
  1. #!/bin/bash
  2. #####################################################################
  3. # 脚本功能:log合并
  4. #####################################################################
  5. # 存log的路径
  6. LOG_PATH=.
  7. # 合成的文件
  8. APP_MERGE_LOG_FILE=${LOG_PATH}/app_log_$(date +%m%d_%H%M)
  9. # 总app log文件合成
  10. touch ${APP_MERGE_LOG_FILE}
  11. for i in 4 3 2 1 0;
  12. do
  13.     $(cat demo.log.${i} >> ${APP_MERGE_LOG_FILE} 2>&1)
  14. done
  15. $(cat demo.log >> ${APP_MERGE_LOG_FILE} 2>&1)
  16. echo "merge app_log success!! file_name: ${APP_MERGE_LOG_FILE}"

我们可以观察log的特点进行合并。比如可以通过文件创建的时间顺序来合并。或者log是存在嵌入式Linux板上,也可以借助rsync工具把log同步到本地之后根据时间来合并。这类情况的合并的脚本我们之前也有分享过,传送门:

分享嵌入式中几个实用的shell脚本!

以上就是本次的分享~

如果觉得文章有帮助,麻烦帮忙点赞、收藏、转发,谢谢!

猜你喜欢:

分享一份嵌入式软件工具清单!

一门易用性极强的动态语言!

一位嵌入式前辈 8 年的工作总结,强!

分享嵌入式中几个实用的shell脚本!

嵌入式大杂烩周记 | 第 8 期 AMetal

嵌入式大杂烩周记 | 第 7 期 zlog

嵌入式大杂烩周记 | 第 6 期 FlexibleButton

嵌入式大杂烩周记 | 第 5 期 smartlink

在公众号聊天界面回复1024,可获取嵌入式资源;回复 m ,可查看文章汇总。

文章来源: blog.csdn.net,作者:嵌入式大杂烩,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/zhengnianli/article/details/124507484

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。