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

Posted 嵌入式大杂烩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分享一种日志滚动覆盖的方法相关的知识,希望对你有一定的参考价值。

大家好,我是杂烩君。

祝各位假期愉快!

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

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

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

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

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

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

例子:

#include <stdio.h>
#include <unistd.h>
#include "zlog.h"

int main(int argc, char** argv)

 int rc;
 zlog_category_t *zc;

 rc = zlog_init("test.conf");
 if (rc) 
 
  printf("init failed\\n");
  return -1;
 

 zc = zlog_get_category("my_cat");
 if (!zc) 
 
  printf("get cat fail\\n");
  zlog_fini();
  return -2;
 
 zlog_info(zc, "微信公众号:嵌入式大杂烩");
 int i = 0;
 while (1)
 
  zlog_info(zc, "hello, zlog, %d", i++);
  usleep(1000);
 

 zlog_fini();
 
 return 0;

zlog的配置文件test.conf:

[formats]
simple = "%d.%us %m%n"
[rules]
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

运行得到:

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

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

#!/bin/bash

#####################################################################
# 脚本功能:log合并
#####################################################################
# 存log的路径
LOG_PATH=.

# 合成的文件
APP_MERGE_LOG_FILE=$LOG_PATH/app_log_$(date +%m%d_%H%M)

# 总app log文件合成
touch $APP_MERGE_LOG_FILE
for i in 4 3 2 1 0;
do
    $(cat demo.log.$i >> $APP_MERGE_LOG_FILE 2>&1)
done
$(cat demo.log >> $APP_MERGE_LOG_FILE 2>&1)
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 ,可查看文章汇总。

创作打卡挑战赛 赢取流量/现金/CSDN周边激励大奖

以上是关于分享一种日志滚动覆盖的方法的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使滚动视图不覆盖整个屏幕?

wpf 来回拉动滚动条抛异常

一行 来回滚动制作

滚动数组要来回赋初值呀。。orzzzzzzzzzzzzzzzzzzzzzzzzzz

使用Magic Trackpad 2在Mac上滚动Microsoft远程桌面

关于含RecyclerView的fragment来回切换时页面自动滑动到底部的解决方法