C SDK

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