本文介绍使用C Producer SDK的基本操作。
日志服务C Producer是用纯C编写的日志采集客户端,提供更加精简的环境依赖以及更低的资源占用,适用于各类嵌入式/智能设备的日志采集。
功能特性
异步
异步写入,客户端线程无阻塞。
聚合&压缩上传
支持按超时时间、日志数、日志size聚合数据发送。
支持lz4压缩。
支持上下文查询
同一个客户端产生的日志在同一上下文中,支持查看某条日志前后相关日志。
并发发送
支持可配置的线程池发送。
缓存
可设置缓存上限,超过缓存上限的日志会写入失败。
自定义标识
日志上传时默认会带上ip。
支持设置自定义tag、topic。
功能优势
客户端高并发写入:可配置的发送线程池,支持每秒数十万条日志写入,详情参见性能测试。
低资源消耗:每秒20W日志写入只消耗30% CPU;同时在低性能硬件(例如树莓派)上,每秒产生100条日志对资源基本无影响。详情参见性能测试。
客户端日志不落盘:数据产生后直接通过网络发往服务端。
客户端计算与 I/O 逻辑分离:日志异步输出,不阻塞工作线程。
可靠退出:程序退出时,会调用接口将日志持久化,待下次应用启动时将数据发送,保证数据可靠性。详情参见程序可靠退出方案。
分支选择
C Producer根据不同的设备类型和使用场景做了非常多的定制工作,因此分为几个分支来支持不同的场景,请根据实际需求选择。
分支 | 状态 | 功能优势 | 建议使用场景 |
master | 可用 | 原lite分支,相比v1(1.0f)版本依赖、资源占用、性能等有大幅度提升,是目前SLS性能最强的Producer,推荐使用。 | Linux服务器、嵌入式Linux |
live | 可用 | 主要功能和master版本一致,增加最多平台的编译支持,包括Windows、Mac、Android、IOS等 | 非master支持的环境 |
bricks | 可用 | 极致精简版本,binary和内存占用极低,但是功能非常弱,建议在资源非常受限的场景中使用 | 资源占用在10KB以内的场景,例如RTOS |
persistent | 可用 | 相比master增加本地缓存功能,目前用于Android、IOS移动端版本的Native实现,本地缓存功能开启后只能单线程发送,不建议服务端使用 | 建议直接使用Android、IOS官方SDK |
下载与安装
源码及详细安装方法请参考Github文档: