云日志服务Python SDK for i in range(0, 10000): producer.sendlogs(logproject, logunit, logitem) time.sleep(5) 安全关闭producer producer.safeclose() except Exception as ex: print(ex) if name "main": main() 4. 服务代码示例同步上传 同步上传每调用一次发送日志的方法,就会进行一次https请求发送日志,然后返回日志发送结果。同步上传对于需求简单,发送频率不高,发送量不大的场景比较适用。虽然是同步发送,但是可以将多条日志合在一起,一次性发送,减少API请求次数。 4.1. 关于Client的操作 client的默认配置,里面包含如下参数。 参数 参数类型 描述 是否必须 endpoint string 域名 是 accesskey string 用户信息凭证,简称ak 是 secretkey string 用户信息凭证,简称sk 是 logproject string 日志项目编码 是 requesttimeout int http请求超时时间,默认30s 否 compresstype string 日志压缩算法,默认“lz4” 否 useragent string ltssdkpython/ 否 retries int 日志上传失败的重试次数 否 noretrystatuscode list 不进行重试的响应状态码 否 示例代码:初始化Client plaintext clientconfig ClientConfig(endpoint, accesskey, secretkey) 可对默认配置进行变更 clientconfig.requesttimeout 30 Clientconfig.retries 3 logclient LogClient(clientconfig) 或者使用默认配置 logclient LogClient(endpointendpoint, accesskeyaccesskey, secretkeysecretkey) 4.2. 关于Log的操作 日志上传只能上传LogItem格式的日志,logitems是一个数组类型,里面包含若干条LogItem日志,格式如下: 参数 类型 描述 是否必须 logitems []LogItem LogItem格式的数组,将多份日志组合起来发送 是 配置一个或多个logitem,然后放入logitems下的数组,作为参数传递,这就是要传入的日志信息,LogItem类型需要的参数如下。 参数 类型 描述 是否必须 logtimestamp int 时间戳,单位纳秒 是 originmsg string 原始日志内容 是 contents dict 日志内容,分词后的内容 否 labels dict 自定义标签 否 注意:单条日志最大1MB,单个包最大5MB,其中contents和labels的key的长度不超过64字符,仅支持数字、字母、下划线、连字符()、点(.),且必须以字母开头。value类型最好使用字符串(string)和数字类型(int,double),其他类型建议先转为字符串类型,并且value值不能为空或空字符串。 示例代码:组装生成10条日志 plaintext logitems [] logitem LogItem() currtime getcurrenttimestamp(3) logitem.setlogtimestamp(currtime) logitem.setoriginmsg("Python sdk test oriMessage") logitem.contentspushback("contentInt", currtime) logitem.contentspushback("level", "info") logitem.contentspushback("area:", 3.1415926) logitem.contentspushback("unitid", 123145) for i in range(1, 10): logitems.append(logitem) 当然,对于dict 类型的contents 和labels 类型,也可以用set方法进行赋值,减少pushback()操作。 plaintext contents {"contentInt": 123456,"contentString": "string content"} logitem.setcontents(contents)
来自: