V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
armink
V2EX  ›  C

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

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

    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   ·   实用小工具   ·   1037 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 19:38 · PVG 03:38 · LAX 11:38 · JFK 14:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.