云日志服务Go SDK 3.1. 基本使用 使用 SDK访问云日志服务,需要设置正确的 AccessKey、SecretKey 和endpoint,所有的服务可以使用同一 key 凭证来进行访问,但不同的服务地区需要使用不同的 endpoint 进行访问,详情参考天翼云官网SDK接入概述。在调用前SDK,需要已知以下参数: 云日志服务访问地址。详情请查看访问地址(Endpoint)。 key凭证:accessKey和secretKey 。详情请查看如何获取访问密钥(AK/SK)。 日志项目编码:logProject,在使用SDK前,需要确保您有至少一个已经存在的日志项目。 日志单元编码:logUnit,在使用SDK前,需要确保日志项目中有至少一个已经存在的日志单元。 待上传的日志:logItem,在使用SDK前,需要确保日志已按照特定格式组织。 参数 参数类型 描述 是否必须 endpoint string 域名 是 accessKey string AccessKey,简称ak 是 secretKey string SecretKey ,简称sk 是 logProject string 日志项目编码 是 logUnit string 日志单元编码 是 目前通过SDK将日志上传有两种上传形式:同步上传和异步批量上传,详细文档参考代码内README文件。 1、同步上传:当调用日志上传接口时,sdk会立即进行http请求调用,并返回发送结果。这种方式结构简单,可用于发送频率不高的场景。 2、异步批量上传:当调用日志上传接口时,后台线程会将日志进行累积,当达到发送条件时,会进行一次合并发送。对于需要频繁调用发送接口的场景,这种方式性能更卓越,更高效。 示例代码:同步上传 plaintext import ( "ctyunltsgosdk/lts" "fmt" "time" ) func main() { ak : "your accessKey" sk : "your secretKey" logProject : "log project Code" logUnit : "log unit Code" endpoint : " clientConfig : lts.InitClientConfig(endpoint, ak, sk) client, err : lts.CreateClient(clientConfig) if err ! nil { fmt.Println("client initialization failed, err:", err) return } logTimestamp : time.Now().UnixNano() originMsg : "go sdk test oriMessage" contents : make(map[string]any) contents["contentInt"] logTimestamp contents["contentString"] "contents test string" contents["contentDouble"] 3.1415926 contents["contentBool"] "true" labels : make(map[string]any) labels["usertag"] "string" logItem : lts.GenerateLogItem(logTimestamp, originMsg, contents, labels) logItems : lts.NewLogItems() for i : 0; i < 10; i++ { logItems.AddLogItem(logItem) } for j : 0; j < 100; j++ { response, err : client.PutLogs(logProject, logUnit, logItems) if err ! nil { fmt.Println("Put log failed: ", err) } else { fmt.Println("Response message: ", response.Message) } }} 示例代码:异步批量上传 plaintext import ( "ctyunltsgosdk/lts" "ctyunltsgosdk/lts/producer" "fmt" "time" ) func main() { ak : "your accessKey" sk : "your secretKey" logProject : "log project Code" logUnit : "log unit code" endpoint : "your endpoint" producerConfig : producer.GetDefaultProducerConfig() //使用默认配置 producerConfig.AllowLogLevel "warn" //也可自定义设置 producerConfig.LingerMs 2000 producerInstance : producer.InitProducer(producerConfig) // 可以根据clientConfig 创建多个client,client间互不影响 clientConfig : lts.InitClientConfig(endpoint, ak, sk) err : producerInstance.BuildClient(clientConfig) if err ! nil { fmt.Println("client initialization failed, err:", err) return } //启动后台的异步线程 producerInstance.Start() for i : 0; i < 1000; i++ { err producerInstance.SendLogs(logProject, logUnit, GenerateLog()) //不接收发送结果,不返回每条日志发送结果 //err producerInstance.SendLogsWithCallBack(logProject2, logUnit2, GenerateLog()) //接受每条日志发送结果,回调 if err ! nil { fmt.Println(err) } } fmt.Println("Send completion") //SafeClose会等待所有任务结束 producerInstance.SafeClose() }
来自: