• Stars
    star
    179
  • Rank 214,039 (Top 5 %)
  • Language
    Java
  • License
    MIT License
  • Created almost 8 years ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

log service android producer

基于aliyun-log-c-sdk ,提供了在Android平台上将日志采集到日志服务的接口。

功能特点

  • 异步
    • 异步写入,客户端线程无阻塞
  • 聚合&压缩 上传
    • 支持按超时时间、日志数、日志size聚合数据发送
    • 支持lz4压缩
  • 多客户端
    • 可同时配置多个客户端,每个客户端可独立配置采集优先级、缓存上限、目的project/logstore、聚合参数等
  • 缓存
    • 支持缓存上限可设置
    • 超过上限后日志写入失败
  • 自定义标识
    • 支持设置自定义tag、topic
  • 断点续传功能
    • 每次发送前会把日志保存到本地的binlog文件,只有发送成功才会删除,保证日志上传At Least Once(配置多个客户端时,不应设置相同持久化文件)
  • 上下文
    • 采集上来的日志,支持查看某条日志的上下文

image.png

性能测试

  • 开启断点续传
发送 条/每秒 cpu占用 内存占用(MB) 上传速(MB/min)
1 <1% 49 0.046
10 2% 53 0.442
100 8% 57 4.393
200 10% 70 7.90
  • 不开启断点续传
发送 条/每秒 cpu占用 内存占用(MB) 上传速(MB/min)
1 <1% 49 0.046
10 2% 58 0.442
100 10% 60 4.393
200 15% 70 7.90

SDK包体积

  • aar包体积

aar包体积.png

  • 引用SDK包前后体积对比

引用SDK包前后体积对比.png

配置说明

环境要求

  • Android版本4.0(API 14)及以上。
  • 必须注册有Aliyun.com用户账户,并开通相应的服务(LOG)。

Gradle配置

jcenter()
implementation 'com.aliyun.openservices:aliyun-log-android-sdk:2.6.2'

混淆配置

-keep class com.aliyun.sls.android.producer.* { *; }
-keep interface com.aliyun.sls.android.producer.* { *; }

Android权限

上传日志需要

<uses-permission android:name="android.permission.INTERNET" />

开启断点续传功能需要有持久化文件的读写权限

创建config

https://help.aliyun.com/document_detail/29064.html

// endpoint前需要加 https://
String endpoint = "project's_endpoint";
String project = "project_name";
String logstore = "logstore_name";
String accesskeyid = "your_accesskey_id";
String accesskeysecret = "your_accesskey_secret";
LogProducerConfig config = new LogProducerConfig(endpoint, project, logstore, accesskeyid, accesskeysecret);
// 指定sts token 创建config,过期之前调用resetSecurityToken重置token
// LogProducerConfig config = new LogProducerConfig(endpoint, project, logstore, accesskeyid, accesskeysecret, securityToken);

配置config

// 设置主题
config.setTopic("test_topic");
// 设置tag信息,此tag会附加在每条日志上
config.addTag("test", "test_topic");
// 每个缓存的日志包的大小上限,取值为1~5242880,单位为字节。默认为1024 * 1024
config.setPacketLogBytes(1024*1024);
// 每个缓存的日志包中包含日志数量的最大值,取值为1~4096,默认为1024
config.setPacketLogCount(1024);
// 被缓存日志的发送超时时间,如果缓存超时,则会被立即发送,单位为毫秒,默认为3000
config.setPacketTimeout(3000);
// 单个Producer Client实例可以使用的内存的上限,超出缓存时add_log接口会立即返回失败
// 默认为64 * 1024 * 1024
config.setMaxBufferLimit(64*1024*1024);
// 发送线程数,默认为1
config.setSendThreadCount(1);

// 1 开启断点续传功能, 0 关闭
// 每次发送前会把日志保存到本地的binlog文件,只有发送成功才会删除,保证日志上传At Least Once
config.setPersistent(0);
// 持久化的文件名,需要保证文件所在的文件夹已创建。配置多个客户端时,不应设置相同文件
config.setPersistentFilePath(getFilesDir() + "/log.dat");
// 是否每次AddLog强制刷新,高可靠性场景建议打开
config.setPersistentForceFlush(1);
// 持久化文件滚动个数,建议设置成10。
config.setPersistentMaxFileCount(10);
// 每个持久化文件的大小,建议设置成1-10M
config.setPersistentMaxFileSize(1024 * 1024);
// 本地最多缓存的日志数,不建议超过1M,通常设置为65536即可
config.setPersistentMaxLogCount(65536);

动态配置

2.6.0版本开始, sdk 新增 endpoint、project、logstore 参数的动态配置。

// 动态更新 endpoint
config.setEndpoint(endpoint);
// 动态更新 logproject
config.setProject(project);
// 动态更新 logstore 
config.setLogstore(logstore);

config其他参数设置说明

参数设置 说明 取值
setTopic topic 字段的值 字符串,默认为空串
addTag tag:xxxx 字符串,默认为空串
setSource source 字段的值 字符串,默认为 Android
setPacketLogBytes 每个缓存的日志包的大小上限 整数,取值为1~5242880,单位为字节。默认为1024 * 1024
setPacketLogCount 每个缓存的日志包中包含日志数量的最大值 整数,取值为1~4096,默认为1024
setPacketTimeout 被缓存日志的发送超时时间,如果缓存超时,则会被立即发送 整数,单位为毫秒,默认为3000
setMaxBufferLimit 单个Producer Client实例可以使用的内存的上限,超出缓存时add_log接口会立即返回失败 整数,默认为1
setSendThreadCount 发送线程数 整数,64 * 1024 * 1024
setPersistent 每次发送前会把日志保存到本地的binlog文件,只有发送成功才会删除,保证日志上传At Least Once 整数,1 开启断点续传功能, 0 关闭
setPersistentFilePath 持久化的文件名,需要保证文件所在的文件夹已创建。配置多个客户端时,不应设置相同文件 字符串,默认为空
setPersistentForceFlush 是否每次AddLog强制刷新,高可靠性场景建议打开 整数,默认为0
setPersistentMaxFileCount 持久化文件滚动个数,建议设置成10 整数,默认为0
setPersistentMaxFileSize 每个持久化文件的大小,建议设置成1-10M 整数,默认为0
setPersistentMaxLogCount 本地最多缓存的日志数,不建议超过1M,通常设置为65536即可 整数,默认为65536
setConnectTimeoutSec 网络连接超时时间 整数,单位秒,默认为10
setSendTimeoutSec 日志发送超时时间 整数,单位秒,15
setDestroyFlusherWaitSec flusher线程销毁最大等待时间 整数,单位秒,1
setDestroySenderWaitSec sender线程池销毁最大等待时间 整数,单位秒,1
setCompressType 数据上传时的压缩类型,默认为LZ4压缩 整数,0 不压缩,1 LZ4压缩,默认为1
setNtpTimeOffset 设备时间与标准时间之差,值为标准时间-设备时间,一般此种情况用户客户端设备时间不同步的场景 整数,单位秒,默认为0
setMaxLogDelayTime 日志时间与本机时间之差,超过该大小后会根据 setDropDelayLog 选项进行处理。 整数,单位秒,默认为7243600,即7天
setDropDelayLog 对于超过 setMaxLogDelayTime 日志的处理策略 整数,0 不丢弃,把日志时间修改为当前时间; 1 丢弃,默认为 0 (不丢弃)
setDropUnauthorizedLog 是否丢弃鉴权失败的日志 整数,0 不丢弃,1丢弃,默认为 0
setCallbackFromSenderThread 是否从 sender 线程回调 callback 布尔值,true,从 sender 线程回调;false,从主线程回调。默认为 true

设置回调函数,创建client

// 回调函数不填,默认无回调
LogProducerClient client = new LogProducerClient(config, new LogProducerCallback() {
    @Override
    public void onCall(int resultCode, String reqId, String errorMessage, int logBytes, int compressedBytes) {
        // 回调
        // resultCode       返回结果代码
        // reqId            请求id
        // errorMessage     错误信息,没有为null
        // logBytes         日志大小
        // compressedBytes  压缩后日志大小
        android.util.Log.d("LogProducerCallback",String.format("%s %s %s %s %s",
                                LogProducerResult.fromInt(resultCode), reqId, errorMessage, logBytes, compressedBytes));
    }
});

写数据

Log log = new Log();
log.putContent("k1", "v1");
log.putContent("k2", "v2");
// addLog第二个参数flush,是否立即发送,1代表立即发送,不设置时默认为0
LogProducerResult res = client.addLog(log, 0);

More Repositories

1

oss-browser

OSS Browser 提供类似windows资源管理器功能。用户可以很方便的浏览文件,上传下载文件,支持断点续传等。
JavaScript
3,175
star
2

aliyun-openapi-java-sdk

Alibaba Cloud SDK for Java
Java
1,379
star
3

aliyun-oss-java-sdk

Aliyun OSS SDK for Java
Java
1,216
star
4

alibaba-cloud-sdk-go

Alibaba Cloud SDK for Go
Go
1,104
star
5

alicloud-android-demo

Java
990
star
6

aliyun-openapi-python-sdk

Alibaba Cloud SDK for Python
Python
980
star
7

aliyun-oss-php-sdk

Aliyun OSS SDK for PHP
PHP
975
star
8

aliyun-oss-go-sdk

Aliyun OSS SDK for Go
Go
951
star
9

aliyun-oss-python-sdk

Aliyun OSS SDK for Python
Python
935
star
10

darabonba

Darabonba 是一种用于 OpenAPI 的 DSL 语言,可以用来生成多语言的 SDK、Code Sample、Test Case 等代码
JavaScript
894
star
11

alibabacloud-alfa

阿里云微前端解决方案
TypeScript
845
star
12

aliyun-oss-android-sdk

Android SDK for aliyun object storage service
Java
793
star
13

aliyun-cli

Alibaba Cloud CLI
Go
770
star
14

ossfs

Export s3fs for aliyun oss.
C++
735
star
15

aliyun-openapi-php-sdk

[Abandoned] Open API SDK for PHP developers
PHP
605
star
16

terraform-provider-alicloud

Terraform AliCloud provider
Go
590
star
17

aliyun-openapi-net-sdk

Alibaba Cloud SDK for .NET
C#
535
star
18

rds_dbsync

围绕 PostgreSQL Greenplum ,实现易用的数据的互迁功能项目
C
528
star
19

openapi-sdk-php

Alibaba Cloud SDK for PHP
PHP
501
star
20

iotkit-embedded

高速镜像: https://code.aliyun.com/linkkit/c-sdk
C
492
star
21

ossutil

A user friendly command line tool to access AliCloud OSS.
Go
456
star
22

aliyun-oss-ios-sdk

iOS SDK for aliyun object storage service
Objective-C
450
star
23

aliyun-odps-python-sdk

ODPS Python SDK and data analysis framework
Python
433
star
24

alicloud-ios-demo

Demos for AMS iOS SDKs
Objective-C
431
star
25

alibabacloud-microservice-demo

An Alibaba Cloud native microservice demo powered by Apache Dubbo and Spring Cloud Alibaba
Java
379
star
26

api-gateway-demo-sign-java

aliyun api gateway request signature demo by java
Java
371
star
27

NeWCRFs

Python
365
star
28

aliyun-oss-csharp-sdk

Aliyun OSS SDK for C#
C#
360
star
29

surftrace

surftrace is a tool that allows you to surf the linux kernel
Python
332
star
30

conditional-lane-detection

Python
328
star
31

aliyun-log-jaeger

Go
294
star
32

coolbpf

C
240
star
33

tablestore-examples

Example code for aliyun tablestore.
Java
238
star
34

tablestore-timeline

TableStore-Timeline Model for Social scene
Java
236
star
35

aliyun-log-c-sdk

Aliyun LOG Producer for C/C++
C
215
star
36

openapi-sdk-php-client

Official repository of the Alibaba Cloud Client for PHP
PHP
214
star
37

aliyun-log-logback-appender

Java
186
star
38

alibabacloud-jindodata

alibabacloud-jindodata
176
star
39

openapi-core-nodejs-sdk

OpenAPI POP core SDK for Node.js
JavaScript
175
star
40

aliyun-emapreduce-datasources

Extended datasource support for Spark/Hadoop on Aliyun E-MapReduce.
Scala
168
star
41

aliyun-log-python-sdk

Use python to manage, produce and consume data with Aliyun Log Service.
Python
166
star
42

data-mapping-component

A React Component which focus on Data-Mapping & Table-Field-Mapping.(基于React的数据/表字段映射组件)
JavaScript
155
star
43

aliyun-oss-react-native

Objective-C
148
star
44

aliyun-apsaradb-hbase-demo

C++
146
star
45

django-oss-storage

Django storage backends for AliCloud OSS.
Python
144
star
46

aliyun-oss-c-sdk

Aliyun OSS SDK for C
C
144
star
47

react-visual-modeling

A DAG React Component for visualization modeling, suitable for UML, database modeling, data warehouse construction.(一个基于React的数据可视化建模的DAG图,适用于UML,数据库建模,数据仓库建设等业务)
JavaScript
138
star
48

aliyun-oss-ruby-sdk

Aliyun OSS SDK for Ruby
Ruby
138
star
49

ram-policy-editor

AliCloud RAM Policy Editor for OSS
JavaScript
136
star
50

aliyun-log-java-sdk

Java
135
star
51

serverless-aliyun-function-compute

Serverless Alibaba Cloud Function Compute Plugin – Add Alibaba Cloud Function Compute support to the Serverless Framework
JavaScript
134
star
52

alibabacloud-console-components

阿里云企业云管理平台 UI 组件库
TypeScript
133
star
53

aliyun-log-java-producer

Aliyun LOG Java Producer
Java
131
star
54

fc-nodejs-sdk

The Node.js SDK of FunctionCompute.
JavaScript
130
star
55

aliyun-cms-grafana

JavaScript
127
star
56

aliyun-odps-jdbc

JDBC Driver for ODPS
Java
125
star
57

alibabacloud-quantization-networks

alibabacloud-quantization-networks
Python
122
star
58

aliyun-emapreduce-demo

Java
121
star
59

aliyun-maxcompute-data-collectors

Java
119
star
60

alicloud-ams-demo

C#
117
star
61

alibabacloud-iot-device-sdk

alibaba cloud for iot device javascript SDK , connect with linkplatform , run at node/broswer/winxin min program /ali min program. 阿里云IoT物联网平台javascript版本sdk,可以运行在node/broswer/winxin min program /ali min program. 阿里云IoT物联网平台javascript版本sdk,可以运行在node/broswer/winxin min program /ali min program
JavaScript
110
star
62

MaxCompute-Spark

MaxCompute spark demo for building a runnable application.
Scala
106
star
63

api-gateway-nodejs-sdk

The API Gateway SDK for Node.js
JavaScript
104
star
64

cloud-design

阿里云前端组件库,由专有云&公有云前端团队共建
CSS
99
star
65

gm-jsse

开源国密通信纯 Java JSSE 实现
Java
95
star
66

aliyun-odps-console

ODPS Console Source Code.
Java
93
star
67

aliyun-openapi-cpp-sdk

Alibaba Cloud SDK for C++
C++
90
star
68

aliyun-odps-java-sdk

ODPS SDK for Java Developers
Java
89
star
69

aliyun-tablestore-nodejs-sdk

Aliyun TableStore(原OTS) SDK for Node.js
JavaScript
88
star
70

algorithm-base

让算法工程化更简单
Python
86
star
71

aliyun-log-ios-sdk

Aliyun LOG iOS SDK
Swift
84
star
72

iotx-api-demo

PHP
82
star
73

plugsched

Live upgrade Linux kernel scheduler subsystem
Python
82
star
74

DCT-Mask

Python
81
star
75

aliyun-openapi-nodejs-sdk

Alibaba Cloud SDK for Node.js
JavaScript
80
star
76

aliyun-specs

Aliyun Mobile Service CocoaPods specs.
Ruby
77
star
77

alibabacloud-console-design

阿里云管平台研发解决方案
TypeScript
77
star
78

alibabacloud-redis-training-demo

Java
76
star
79

aliyun-oss-php-sdk-laravel

A Laravel service provider for the AliCloud OSS SDK for PHP
PHP
75
star
80

aliyun-tablestore-go-sdk

TableStore SDK for Golang
Go
75
star
81

alibabacloud-sdk

Tea
75
star
82

fc-docker

Dockerfiles for local building or running function of FC
Dockerfile
74
star
83

elasticsearch-repository-oss

Java
74
star
84

dro-sfm

Python
74
star
85

packagist-mirror

Alibaba Cloud Packagist Mirror
Go
73
star
86

react-monitor-dag

A React-based operation/monitoring DAG diagram.(基于React的运维/监控DAG图)
JavaScript
69
star
87

aliyun_assist_client

Aliyun Assist Client 阿里云 云助手
Go
67
star
88

aliyun-log-php-sdk

PHP
67
star
89

alibabacloud-hologres-connectors

alibabacloud-hologres-connectors
Java
66
star
90

aliyun-tsdb-java-sdk

Aliyun TSDB SDK for Java
Java
64
star
91

aliyun-log-log4j-appender

aliyun-log-log4j-appender
Java
63
star
92

fc-java-sdk

The Java SDK of FunctionCompute.
Java
61
star
93

oss-ftp

The ftp proxy for Aliyun OSS.
Python
61
star
94

react-lineage-dag

JavaScript
61
star
95

aliyun-log-cli

Command Line Interface for Aliyun Log Service
Python
60
star
96

csb-sdk

The CSB-SDK is a client-side invocation SDK for HTTP or Web Service API opened by the CSB (Cloud Service Bus) product. It is responsible for invoking the open API and signing the request information.
Java
58
star
97

ossimport

Data migration tool
58
star
98

aliyun-log-flink-connector

flink log connector
Java
58
star
99

oss-emulator

OSS Emulator
Ruby
58
star
100

aliyun-log-dotnetcore-sdk

C#
55
star