C/C++log日志库比较

事实上,在C的世界里面没有特别好的日志函数库(就像JAVA里面的的log4j,或者C++的log4cxx)。C程序员都喜欢用自己的轮子。printf就是个挺好的轮子,但没办法通过配置改变日志的格式或者输出文件。syslog是个系统级别的轮子,不过速度慢,而且功能比较单调。

尝试了几种C/C++ log库,简单记录如下:

1 log4j的衍生品


日志是应用软件中不可缺少的部分,Apache的开源项目Log4j是一个功能强大的日志组件,提供方便的日志记录,他有很多移植版(包括官方的和非官方的版本)

1.1 log4cxx


地址 http://logging.apache.org/log4cxx/

Log4cxx是开放源代码项目Apache Logging Service的子项目之一,是Java社区著名的log4j的c++移植版,用于为C++程序提供日志功能,以便开发者对目标程序进行调试和审计。

1.2Log4cpp


log4cpp是个基于LGPL的开源项目,移植自Java的日志处理跟踪项目log4j,并保持了API上的一致。其类似的支持库还包括Java(log4j),C++(log4cpp、log4cplus),C(log4c),python(log4p)等。
log4c ,

1.3log4c

log4c现已不再有人维护了。不是面向对象的,不支持流式log输入。有配置文件。最新版本(log4c-1.2.4.tar.gz)存在内存泄露。不建议使用。

1.4 log4cplus

地址 http://sourceforge.net/projects/log4cplus/

log4cplus是C++编写的开源的日志系统,前身是java编写的log4j系统.受Apache Software License保护。

作者是Tad E. Smith。log4cplus具有线程安全、灵活、以及多粒度控制的特点,通过将信息划分优先级使其可以面向程序调试、运行、测试、和维护等全生命周期; 你可以选择将信息输出到屏幕、文件、
NT event log、甚至是远程服务器;通过指定策略对日志进行定期备份等等。

2 google glog


Google glog是一个基于程序级记录日志信息的c++库,编程使用方式与c++的stream操作类似,例:

LOG(INFO) << “Found ” << num_cookies << ” cookies”;

LOG”宏为日志输出关键字,“INFO”为严重性程度。
主要支持功能:

1, 参数设置,以命令行参数的方式设置标志参数来控制日志记录行为;
2, 严重性分级,根据日志严重性分级记录日志;
3, 可有条件地记录日志信息;
4, 条件中止程序。丰富的条件判定宏,可预设程序终止条件;
5, 异常信号处理。程序异常情况,可自定义异常处理过程;
6, 支持debug功能。可只用于debug模式;
7, 自定义日志信息;
8, 线程安全日志记录方式;
9, 系统级日志记录;
10, google perror风格日志信息;
11, 精简日志字符串信息。

3 z-log


地址 https://github.com/HardySimpson/zlog

z-log是一个高性能、线程安全、灵活、概念清晰的纯C日志函数库。
难易编写

这里写图片描述

zlog有这些特性:

  • syslog分类模型,基于规则路由过滤,比log4j模型要正确高效,详见为什么log4j的概念模型是错误的。

  • 日志格式定制,类似于log4j的pattern layout

  • 多种输出,包括动态文件、静态文件、stdout、stderr、syslog、用户自定义输出函数

  • 运行时手动或自动刷新配置(同时保证安全)

  • 高性能,在我的笔记本上达到338’638条日志每秒, 大概是syslog(3)配合rsyslogd的1000倍速度

  • 高可靠性和速度之间的平衡,用户自定义多少条日志后fsync数据到硬盘

  • 用户自定义等级

  • 多线程和多进程环境下保证安全转档

  • 精确到微秒

  • 简单调用包装dzlog(一个程序默认只用一个分类)

  • MDC,线程键-值对的表,可以扩展用户自定义的字段

  • 自诊断,可以在运行时输出zlog自己的日志和配置状态

  • 不依赖其他库,只要是个POSIX系统就成(当然还要一个C99兼容的vsnprintf)

网友提供的其他版本,方便其他平台安装

auto tools版本: https://github.com/bmanojlovic/zlog
cmake版本:https://github.com/lisongmin/zlog
windows版本: https://github.com/lopsd07/WinZlog

4 spdlog


spdlog 是一个快速的 C++ 日志库,只包含头文件,兼容 C++11。

特性:

  • 非常快
  • 只包含头文件
  • 无需依赖第三方库
  • 支持跨平台 - Linux / Windows on 32/64 bits
  • 支持多线程
  • 可对日志文件进行循环输出
  • 可每日生成日志文件
  • 支持控制台日志输出
  • 可选的异步日志
  • 支持日志输出级别
  • 可自定义日志格式

5 c-log


c-log是一个稳定,高效,多线程安全,易用,简单的C/C++ 日志库,在github主页上有丰富的测试case,后续将会推迟直接输出到scribe等集中式日志收集中间件上,帮助用户更好的收集,分析日志

6 syslog-ng


syslog-ng作为syslog的替代工具,可以完全替代syslog的服务,并且通过定义规则,实现更好的过滤功能
的一个设计原则就是建立更好的消息过滤粒度。syslog-ng能够进行基于内容和优先权/facility的过滤。另一个设计原则是更容易进行不同防火墙网段的信息转发,它支持主机链,即使日志消息经过了许多计算机的转发,也可以找出原发主机地址和整个转发链。最后的一个设计原则就是尽量使配置文件强大和简洁。

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…);
日志内容可包含级别、时间戳、线程信息、进程信息等;
日志输出被设计为线程安全的方式,并支持 异步输出 及 缓冲输出 模式;
支持多种操作系统(RT-Thread、UCOS、Linux、Windows…),也支持裸机平台;
日志支持 RAW格式 ;
支持按 标签 、 级别 、 关键词 进行动态过滤;
各级别日志支持不同颜色显示
扩展性强,支持以插件形式扩展新功能。
名词解释: 1、RAW格式:未经过格式化的原始日志。 2、标签:在软件中可以按照文件、模块、功能等方面,对需要打印的日志设定标签,实现日志分类。

已标记关键词 清除标记
一、课程简介<br /> <br /> 随着技术的飞速发展,经过多年的数据积累,各互联网公司已保存了海量的原始数据和各种业务数据,所以数据仓技术是各大公司目前都需要着重发展投入的技术领域。数据仓是面向分析的集成化数据环境,为企业所有决策制定过程,提供系统数据支持的战略集合。通过对数据仓中数据的分析,可以帮助企业改进业务流程、控制成本、提高产品质量等。<br /> <br /> 二、课程内容<br /> <br /> 本次精心打造的数仓项目的课程,从项目架构的搭建,到数据采集模块的设计、数仓架构的设计、实战需求实现、即席查询的实现,我们针对国内目前广泛使用的Apache原生框架和CDH版本框架进行了分别介绍,Apache原生框架介绍中涉及到的技术框架包括Flume、Kafka、Sqoop、MySql、HDFS、Hive、Tez、Spark、Presto、Druid等,CDH版本框架讲解包括CM的安装部署、Hadoop、Zookeeper、Hive、Flume、Kafka、Oozie、Impala、HUE、Kudu、Spark的安装配置,透彻了解不同版本框架的区别联系,将大数据全生态系统前沿技术一网打尽。在过程中对大数据生态体系进行了系统的讲解,对实际企业数仓项目中可能涉及到的技术点都进行了深入的讲解和探讨。同时穿插了大量数仓基础理论知识,让你在掌握实战经验的同时能够打下坚实的理论基础。<br /> <br /> <br /> 三、课程目标<br /> <br /> 本课程以国内电商巨头实际业务应用场景为依托,对电商数仓的常见实战指标以及难点实战指标进行了详尽讲解,具体指标包括:每日、周、月活跃设备明细,留存用户比例,沉默用户、回流用户、流失用户统计,最近连续3周活跃用户统计,最近7天内连续3天活跃用户统计,GMV成交总额分析,转化率及漏斗分析,品牌复购率分析、订单表拉链表的设计等,让学生拥有更直观全面的实战经验。通过对本课程的学习,对数仓项目可以建立起清晰明确的概念,系统全面的掌握各项数仓项目技术,轻松应对各种数仓难题。<br /> <br /> 四、课程亮点<br /> 本课程结合国内多家企业实际项目经验,特别加入了项目架构模块,从集群规模的确定到框架版本选型以及服务器选型,手把手教你从零开始搭建大数据集群。并且总结大量项目实战中会遇到的问题,针对各个技术框架,均有调优实战经验,具体包括:常用Linux运维命令、Hadoop集群调优、Flume组件选型及性能优化、Kafka集群规模确认及关键参数调优。通过这部分学习,助学生迅速成长,获取前沿技术经验,从容解决实战问题。<br /> <br /> <br /> <div> <br /> </div>
相关推荐
<p> <strong><span style="font-size:18px;">课程目标</span></strong> </p> <p> <span style="font-size:18px;">从零开始掌握PS的基础知识,学会抠图修图调色合成制作特效,涵盖平面设计淘宝美工照片修复网页设计UI</span> </p> <p> <strong><span style="font-size:18px;">适用人群</span></strong> </p> <p> <span style="font-size:18px;">PS零基础小白,在校大学生,职场新人,想从事平面设计、摄影后期、电商设计、UI设计、自媒体工作的人</span> </p> <p> <strong><span style="font-size:18px;">课程简介</span></strong> </p> <p> <span style="color:#666666;font-size:18px;">课程以新版PS CC 2020讲解,可使用PS CC任意版本学习,绝大多数功能兼容旧版,但建议使用新版。</span><br /> <span style="color:#666666;font-size:18px;">【Adobe认证专家讲师精耕细作精品教程,非学院派照本宣科软件操作教程,以任务为导向,面向实际应用场景,每一章都能学会实打实的高手技能,讲解细致,小白也能轻松入门】</span><br /> <span style="color:#666666;font-size:18px;">课程好不好,看过就知道,前面的免费章节欢迎试看。</span><br /> <span style="color:#666666;font-size:18px;">本课程学习不需要任何PS基础,只需要电脑操作基础即可。兼容Windows和Mac操作系统,同时讲解两种系统下的快捷键操作,不用担心操作上的障碍问题。</span><br /> <span style="color:#666666;font-size:18px;"><strong>课程特色:</strong></span><br /> <span style="color:#666666;font-size:18px;">1、以实际PS图像编辑与合成的流程为导向,绝大多数内容都是为了完成某个具体任务,而不是为了讲解某个软件操作而凑数。</span><br /> <span style="color:#666666;font-size:18px;">2、不同于国内多数教程和书籍,每个知识点务求讲精、讲透,帮助你掌握PS的精髓,而非软件操作上的皮毛,让你真正学到PS的本质,一次学习,终身受用,少走弯路,节约生命。</span><br /> <span style="color:#666666;font-size:18px;">3、课程会随PS新版本的推出持续更新,不必担心有新功能却不知道怎么用。</span><br /> <span style="color:#666666;font-size:18px;">4、充足的练习题和作业题,让你在不断的练习和挑战中提升PS技能。</span> </p> <p> <img src="https://img-bss.csdnimg.cn/202007270604434777.jpg" alt="" /><img src="https://img-bss.csdnimg.cn/202007270606519854.png" alt="" /><img src="https://img-bss.csdnimg.cn/202007270607061438.jpg" alt="" /><img src="https://img-bss.csdnimg.cn/202007270607183610.jpg" alt="" /><img src="https://img-bss.csdnimg.cn/202007270607312915.jpg" alt="" /><img src="https://img-bss.csdnimg.cn/202007270607393129.jpg" alt="" /><img src="https://img-bss.csdnimg.cn/202007270607483175.jpg" alt="" /><img src="https://img-bss.csdnimg.cn/202007270607551373.jpg" alt="" /> </p> <p> <br /> </p> <p> <br /> </p> <p> <br /> </p>
<span> </span> <div> 以通俗简介的方式,从浅入深介绍SVM原理和代码流程 让你从此不再惧怕SVM <br /> </div> <div> <p> <br /> </p> <p> <br /> </p> <p> <strong><span style="color:#E53333;">视频部分:</span></strong> </p> </div> 01_SVM之回顾梯度下降原理<br /> 02_SVM之回顾有约束的最优化问题<br /> 03_SVM之回顾有约束的最优化问题-KKT几何解释<br /> 04_SVM之回顾有约束的最优化问题-KKT数学解释<br /> 05_SVM之回顾距离公式和感知器模型<br /> 06_SVM之感知器到SVM的引入<br /> 07_SVM之线性可分时损失函数的表示<br /> 08_SVM之线性可分时损失函数的求解-对w,b变量求偏导<br /> 09_SVM之线性可分时损失函数的求解-对β变量求解.<br /> 10_SVM之线性可分时算法整体流程<br /> 11_SVM之线性可分时案例<br /> 12_SVM之线性不可分时软间隔介绍<br /> 13_SVM之线性不可分时软间隔优化目标<br /> 14_SVM之线性不可分时软间隔算法整体流程<br /> 15_SVM之线性不可分时数据映射高维解决不可分问题<br /> 16_SVM之线性不可分时核函数引入<br /> 17_SVM之线性不可分时核函数讲解<br /> 18_SVM代码之线性可分时和Logistic回归比较<br /> 19_SVM代码之基于鸢尾花数据多分类参数解释<br /> 20_SVM代码之基于鸢尾花数据网格搜索选择参数<br /> 21_SVM代码之不同分类器,核函数,C值的可视化比较<br /> <p> 22_SVM之回归方式SVR </p> <p> 23_SVM代码之SVR解决回归问题 </p> 24_SVM之SMO思想引入<br /> <p> 25_SVM之SMO案列讲解 </p> <p> <br /> </p> <p> <strong><span style="color:#E53333;">代码部分:</span></strong> </p> <p> <img src="https://img-bss.csdn.net/202005090648425294.png" alt="" /> </p> <p> <br /> </p> <p> <strong><span style="color:#E53333;">资料部分:</span></strong> </p> <p> <img src="https://img-bss.csdn.net/202005090649458459.png" alt="" /> </p>
<p> 本课程适合学习完NA/NP课程或有相应水平人士。 </p> <p> 本课程介绍思科安全产品ASA的配置方法与部署方法。同时介绍技术特点与部署环境的主要应用,问题及解决办法。本课程介绍了基本的图型化配置方法与命令行配置方法,使用虚拟机版本8.42,基本与真实机器无差别。 </p> <p> 本课程主要讲解的安全技术如下: </p> <p> ACL,对像组,穿越ASA,MPF,NAT,PAT,透明防火墙,多模式防火,冗余,A/S,A/A等技术介绍,同时简单介绍了关于ASA配置路由协议的命令。 </p> <p> <span style="font-size:12px;">                                                    </span><span style="font-size:12px;"><img alt="" src="/files/course/2019/01-03/1039379c4868990589.png" /></span><span style="font-size:12px;">     </span> </p> <p> <strong>课件截图:</strong> </p> <p> <strong><img src="https://img-bss.csdn.net/201903040836078128.png" alt="" /><br /></strong> </p> <p> <span><img alt="" src="/files/course/2019/01-03/1040215267fd564001.png" /><span></span></span> </p> <p> <span><img alt="" src="/files/course/2019/01-03/1040215bb026293530.png" /><span></span></span> </p> <p> <span><img alt="" src="/files/course/2019/01-03/104022627658793297.png" /><span></span></span> </p> <p> <span><img alt="" src="/files/course/2019/01-03/10402268a620285311.png" /><img src="https://img-bss.csdn.net/201903040836244547.png" alt="" /><span></span></span> </p> <p> <span><img alt="" src="/files/course/2019/01-03/1040226e6290544999.png" /></span> </p> <p> <span><img alt="" src="/files/course/2019/01-03/1040579f1abe825951.png" /><img src="https://img-bss.csdn.net/201903040836403876.png" alt="" /><span></span></span> </p> <p> <span><img alt="" src="/files/course/2019/01-03/104357d87025201016.png" /><img src="https://img-bss.csdn.net/201903040836553058.png" alt="" /><img src="https://img-bss.csdn.net/201903040837233348.png" alt="" /><span></span></span> </p> <p> <span><img alt="" src="/files/course/2019/01-03/104100c3abf0549382.png" /><img src="https://img-bss.csdn.net/201903040842254505.png" alt="" /><span></span></span> </p> <p> <img src="https://img-bss.csdn.net/201903040842165219.png" alt="" /></p> <p> <img src="https://img-bss.csdn.net/201903040842343037.png" alt="" /></p> <p> <br /></p> <p> <img src="https://img-bss.csdn.net/201903040842533750.png" alt="" /></p> <p> <br /></p>
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页