前提条件
创建并获取云 API 密钥信息 AccessKeyID 和 AccessKeySecret,密钥信息获取请前往 API 密钥管理。
并请确保密钥关联的账号具有相应的 SDK 上传日志权限。
准备开发环境
请参见 Go 官网 下载并安装 Go 开发环境。
Go 安装完毕后请新建系统变量 GOPATH,并将其指向您的代码目录。
安装 GO SDK
在命令行工具中,执行以下命令安装 GO SDK。
go get github.com/tencentcloud/tencentcloud-cls-sdk-go
引入日志服务 Go SDK
后续实际写代码脚本时,需在您的 Go 代码中需要引入日志服务 Go SDK。
import ("fmt""github.com/TencentCloud/tencentcloud-cls-sdk-go")
请求参数
变量 | 类型 | 是否必填 | 说明 |
Endpoint | String | 是 | |
AccessKeyID | String | 是 | |
AccessKeySecret | String | 是 | |
topicId | String | 是 | 日志主题的 ID 信息。 |
日志上传示例代码
以下代码以 Go SDK 为例,展示通过调用 SDK 完成日志上传的操作,示例代码如下所示。
package main// 引入日志服务 Go SDKimport ("fmt""github.com/tencentcloud/tencentcloud-cls-sdk-go""sync""os""time")func main() {producerConfig := tencentcloud_cls_sdk_go.GetDefaultAsyncProducerClientConfig()// 填入域名信息,填写指引:https://cloud.tencent.com/document/product/614/18940#.E5.9F.9F.E5.90.8D,请参见链接中 API 上传日志 Tab 中的域名producerConfig.Endpoint = "ap-XXXXXXXXX.cls.xxxxxxx.com"// 填入云API密钥信息。密钥信息获取请前往:https://console.cloud.tencent.com/cam/capi// 并请确保密钥关联的账号具有相应的日志上传权限,权限配置指引:https://cloud.tencent.com/document/product/614/68374#.E4.BD.BF.E7.94.A8-api-.E4.B8.8A.E4.BC.A0.E6.95.B0.E6.8D.AE// 本示例从环境变量中获取,环境变量配置指引:https://cloud.tencent.com/document/product/614/113851producerConfig.AccessKeyID = os.Getenv("TENCENTCLOUD_SECRET_ID")producerConfig.AccessKeySecret = os.Getenv("TENCENTCLOUD_SECRET_KEY")// 设置要上传日志的主题 ID,替换为您的 Topic IDtopicId := "8bbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"// 创建异步生产者客户端实例producerInstance, err := tencentcloud_cls_sdk_go.NewAsyncProducerClient(producerConfig)if err != nil {fmt.Println(err)return}// 启动异步发送程序producerInstance.Start()var m sync.WaitGroupcallBack := &Callback{}for i := 0; i < 10; i++ {m.Add(1)go func() {defer m.Done()for i := 0; i < 1000; i++ {// 创建新的日志,包含当前时间戳和日志内容log := tencentcloud_cls_sdk_go.NewCLSLog(time.Now().Unix(), map[string]string{"content": "hello world| I'm from XXX", "content2": fmt.Sprintf("%v", i)})err = producerInstance.SendLog(topicId, log, callBack)if err != nil {fmt.Println(err)continue}}}()}m.Wait()producerInstance.Close(60000)}type Callback struct {}func (callback *Callback) Success(result *tencentcloud_cls_sdk_go.Result) {attemptList := result.GetReservedAttempts()for _, attempt := range attemptList {fmt.Printf("%+v \\n", attempt)}}func (callback *Callback) Fail(result *tencentcloud_cls_sdk_go.Result) {fmt.Println(result.IsSuccessful())fmt.Println(result.GetErrorCode())fmt.Println(result.GetErrorMessage())fmt.Println(result.GetReservedAttempts())fmt.Println(result.GetRequestId())fmt.Println(result.GetTimeStampMs())}