轻量级 C/C++ 日志库 EasyLogger 新增彩色日志、异步输出功能 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
armink
V2EX    C

轻量级 C/C++ 日志库 EasyLogger 新增彩色日志、异步输出功能

  •  1
     
  •   armink 2016-11-15 21:51:33 +08:00 3714 次点击
    这是一个创建于 3253 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1. 介绍

    EasyLogger 是一款超轻量级(ROM<1.6K, RAM<0.3K)、高性能的 C/C++ 日志库,非常适合对资源敏感的软件项目,例如: IoT 产品、可穿戴设、智能家居等等。相比 log4c 、 zlog 这些知名的 C/C++ 日志库, EasyLogger 的功能更加简单,提供给用户的接口更少,但上手会很快,更多实用功能支持以插件形式进行动态扩展。

    1.1 主要特性

    • 支持用户自定义输出方式(例如:终端、文件、数据库、串口、 485 、 Flash...);
    • 日志内容可包含级别、时间戳、线程信息、进程信息等;
    • 日志输出被设计为线程安全的方式,并支持 异步输出缓冲输出 模式;
    • 支持多种操作系统(RT-Thread、 UCOS 、 Linux 、 Windows...),也支持裸机平台;
    • 日志支持 RAW 格式
    • 支持按 标签级别关键词 进行动态过滤;
    • 各级别日志支持不同颜色显示
    • 扩展性强,支持以插件形式扩展新功能。

    2 、本次更新

    版本号 V1.11.13,主要发布以下重要功能:

    2.1 、新增 彩色日志

    所有级别日志可独立设置颜色,错误信息更加明显,日志更加赏心悦目,进一步提升调试效率。详细使用方法,请参照说明文档点击查看。 Linux Demo 里已经默认开启了此功能,大致效果如下,欢迎试用 TextColor

    点击查看 在 xshell 上显示彩色串口日志的配置方法

    2.2 、新增 异步输出模式(非阻塞输出模式)

    之前的版本默认为阻塞的同步输出模式,即用户线程输出日志时,日志必须完全输出到输出介质(串口、网络、文件等)上,输出过程才会退回。 这样会影响应用软件执行时间及执行效率。开启异步输出模式后,后台有专门的日志线程负责完成日志输出功能,应用程序输出日志时,底层只将日志拷贝至缓冲区后,随即退出日志输出方法。

    异步输出默认使用 POSIX pthread 实现,对于 Windows 、 Liunx 、 RT-Thread 及其他支持 POSIX pthread 的用户,只需开启异步输出相关配置,即可开启此功能。 对于缺少 pthread 支持的平台,例如: ucos ,也可以参考 elog_async.c 中关于异步输出线程的实现方式,自己动手实现。

    PS : Linux Demo 中已开启 pthread 异步输出模式, RT-Thread Demo 已使用其线程相关 API 实现异步输出模式。

    2.3 、新增 缓冲输出模式

    开启缓冲输出模式后,如果缓冲区不满,用户线程在进行日志输出时,无需等待日志彻底输出完成,即可直接返回。 但当日志缓冲区满以后,将会占用当前用户线程,自动将缓冲区中的日志全部输出干净。 同时用户也可以在其他非用户线程,通过定时等机制使用 void elog_flush(void) 将缓冲区中的日志输出干净。


    目前项目已提供: linux 、 windows 、 RT-Thread 操作系统及裸机(STM32)平台 Demo

    欢迎大家试用并吐槽,项目详见

    2 条回复    2016-11-16 08:18:03 +08:00
    ju5t4fun
        1
    ju5t4fun  
       2016-11-15 22:37:20 +08:00
    有点后悔给你提交那个 pull request 了,彩色这个功能有点鸡肋,增加了额外的输出字节不说,还有使用条件,必须用支持颜色的终端才行,否则就是乱码,感觉和超轻量级和高性能背道而驰了
    armink
        2
    armink  
    OP
       2016-11-16 08:18:03 +08:00
    @ju5t4fun 性能感觉影响并不太大,多了一点点字符拷贝工作而已,但对于用户的体验上还是有提升的,用户选择性开启即可。再次感谢你的 pr 哈。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     935 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 22:38 PVG 06:38 LAX 15:38 JFK 18:38
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86