事实上,在C的世界里面没有特别好的日志函数库(就像JAVA里面的的log4j,或者C++的log4cxx)。C程序员都喜欢用自己的轮子。printf就是个挺好的轮子,但没办法通过配置改变日志的格式或者输出文件。syslog是个系统级别的轮子,不过速度慢,而且功能比较单调。 尝试了几种C/C++ log库,简单记录如下: 1 log4j的衍生品日志是应用软件中不可缺少的部分,Apache的开源项目Log4j是一个功能强大的日志组件,提供方便的日志记录,他有很多移植版(包括官方的和非官方的版本) 1.1 log4cxxLog4cxx是开放源代码项目Apache Logging Service的子项目之一,是Java社区著名的log4j的c++移植版,用于为C++程序提供日志功能,以便开发者对目标程序进行调试和审计。 1.2Log4cpplog4cpp是个基于LGPL的开源项目,移植自Java的日志处理跟踪项目log4j,并保持了API上的一致。其类似的支持库还包括Java(log4j),C++(log4cpp、log4cplus),C(log4c),python(log4p)等。 1.3log4c
1.4 log4cplus地址 http:///projects/log4cplus/ log4cplus是C++编写的开源的日志系统,前身是java编写的log4j系统.受Apache Software License保护。 作者是Tad E. Smith。log4cplus具有线程安全、灵活、以及多粒度控制的特点,通过将信息划分优先级使其可以面向程序调试、运行、测试、和维护等全生命周期; 你可以选择将信息输出到屏幕、文件、 2 google glogGoogle glog是一个基于程序级记录日志信息的c++库,编程使用方式与c++的stream操作类似,例:
LOG”宏为日志输出关键字,“INFO”为严重性程度。
3 z-log地址 https://github.com/HardySimpson/zlog z-log是一个高性能、线程安全、灵活、概念清晰的纯C日志函数库。 zlog有这些特性:
网友提供的其他版本,方便其他平台安装 auto tools版本: https://github.com/bmanojlovic/zlog 4 spdlogspdlog 是一个快速的 C++ 日志库,只包含头文件,兼容 C++11。 特性:
5 c-logc-log是一个稳定,高效,多线程安全,易用,简单的C/C++ 日志库,在github主页上有丰富的测试case,后续将会推迟直接输出到scribe等集中式日志收集中间件上,帮助用户更好的收集,分析日志 6 syslog-ngsyslog-ng作为syslog的替代工具,可以完全替代syslog的服务,并且通过定义规则,实现更好的过滤功能 7 轻量级日志EasyLogger地址 :https://github.com/armink/EasyLogger 7.1 介绍EasyLogger 是一款超轻量级(ROM<1.6K, RAM<0.3K)、高性能的 C/C++ 日志库,非常适合对资源敏感的软件项目,例如: IoT 产品、可穿戴设备、智能家居等等。相比 log4c、zlog 这些知名的 C/C++ 日志库, EasyLogger 的功能更加简单,提供给用户的接口更少,但上手会很快,更多实用功能支持以插件形式进行动态扩展。 7.2 主要特性支持用户自定义输出方式(例如:终端、文件、数据库、串口、485、Flash…); |
|