GO SDK 上传日志

最近更新时间:2025-07-29 17:52:11

我的收藏
本文介绍如何快速使用日志服务的 GO SDK 实现日志上传的操作。更多 SDK 使用的详细内容,可见代码仓库 tencentcloud-cls-sdk-go

前提条件

创建并获取云 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
域名信息,填写请参见 可用地域 中 API 上传日志 Tab 中的域名。
AccessKeyID
String
云 API 密钥信息,密钥信息获取请前往 API 密钥管理。并请确保密钥关联的账号具有相应的 SDK 上传日志权限
AccessKeySecret
String
云 API 密钥信息,密钥信息获取请前往 API 密钥管理。并请确保密钥关联的账号具有相应的 SDK 上传日志权限
topicId
String
日志主题的 ID 信息。

日志上传示例代码

以下代码以 Go SDK 为例,展示通过调用 SDK 完成日志上传的操作,示例代码如下所示。
不建议将云 API 密钥信息明文存储至工程代码中,可通过环境变量动态获取云 API 密钥信息,具体操作,请参见 配置环境变量
package main
// 引入日志服务 Go SDK
import (
"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/113851
producerConfig.AccessKeyID = os.Getenv("TENCENTCLOUD_SECRET_ID")
producerConfig.AccessKeySecret = os.Getenv("TENCENTCLOUD_SECRET_KEY")
// 设置要上传日志的主题 ID,替换为您的 Topic ID
topicId := "8bbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
// 创建异步生产者客户端实例
producerInstance, err := tencentcloud_cls_sdk_go.NewAsyncProducerClient(producerConfig)
if err != nil {
fmt.Println(err)
return
}

// 启动异步发送程序
producerInstance.Start()

var m sync.WaitGroup
callBack := &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())
}

结语

通过以上步骤,您可以快速使用腾讯云 CLS 的 Go SDK 完成日志的上传操作。如遇到任何问题,请 联系我们 获取帮助。