本文介绍使用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文档: