You need to enable JavaScript to run this app.
文档中心
日志服务

日志服务

复制全文
下载 pdf
C++ SDK
快速开始 C++ SDK
复制全文
下载 pdf
快速开始 C++ SDK
本文介绍如何快速使用日志服务 C++ SDK 实现基础的日志采集流程,包括创建日志项目、创建日志主题、写入日志等操作。​
前提条件​
在使用 C++ SDK 前,请确保您已完成以下事项:​
  • 已安装日志服务 C++ SDK。详细步骤请参考安装C++ SDK。​
  • 已创建并获取火山引擎 API 访问密钥。访问密钥 AccessKey 拥有所有 API 的全部权限。建议您通过 IAM 用户进行 API 相关操作和日常运维。使用 IAM 用户前,主账号需要为 IAM 用户授予日志服务相关资源和操作的权限。​
创建相关资源​
  1. 初始化 Client 实例。​
  • 您可以参考以下示例代码,引入 TLS C++ SDK 并创建 TLS Client,初始化时推荐通过环境变量动态获取火山引擎密钥等身份认证信息,以免 AccessKey 硬编码引发数据安全风险。​
  • ​
    #include <cstdlib>​
    #include <ve-tls-cpp-sdk/TlsClient.h>​
    #include <ve-tls-cpp-sdk/TlsClientConfig.h>​
    #include <ve-tls-cpp-sdk/TlsRequest.h>​
    #include <ve-tls-cpp-sdk/TlsJsonConversion.h>​
    #include <ve-tls-cpp-sdk/TlsResponse.h>​
    ​
    int main(int argc, char **argv) {​
    // 创建client。​
    TlsClientConfig cfg; {​
    // 协议类型,推荐设置为 https://。​
    cfg.scheme = "https://";​
    // 初始化客户端,推荐通过环境变量动态获取火山引擎密钥等身份认证信息,以免 AccessKey 硬编码引发数据安全风险。详细说明请参考https://www.volcengine.com/docs/6470/1166455​
    if (std::getenv("VOLCENGINE_ENDPOINT") != nullptr) {​
    cfg.endpoint = std::getenv("VOLCENGINE_ENDPOINT");​
    }​
    if (std::getenv("VOLCENGINE_ACCESS_KEY_ID") != nullptr) {​
    cfg.access_key_id = std::getenv("VOLCENGINE_ACCESS_KEY_ID");​
    }​
    if (std::getenv("VOLCENGINE_ACCESS_KEY_SECRET") != nullptr) {​
    cfg.access_key_secret = std::getenv("VOLCENGINE_ACCESS_KEY_SECRET");​
    }​
    if (std::getenv("VOLCENGINE_REGION") != nullptr) {​
    cfg.region = std::getenv("VOLCENGINE_REGION");​
    }​
    }​
    TlsClient cli = TlsClient(cfg);​
    }​
    ​
  1. 创建日志项目。​
  • 您可以通过 TLS Client 进行日志项目的管理,例如创建和删除日志项目。对应的参数设置请参考 API 文档。​
  • ​
    #include <ve-tls-cpp-sdk/TlsClient.h>​
    #include <ve-tls-cpp-sdk/TlsClientConfig.h>​
    #include <ve-tls-cpp-sdk/TlsRequest.h>​
    #include <ve-tls-cpp-sdk/TlsJsonConversion.h>​
    #include <ve-tls-cpp-sdk/TlsResponse.h>​
    ​
    int main(int argc, char **argv) {​
    ......​
    {​
    CreateProjectRequest request; {​
    request.region = std::make_shared<std::string>("cn-guilin-boe");​
    request.description = std::make_shared<std::string>("eren test cpp sdk");​
    request.project_name = std::make_shared<std::string>("cppsdkunittest");​
    }​
    auto resp = client.CreateProject(request);​
    }​
    ......​
    }​
    ​
  • 您将得到类似如下的响应:​
  • ​
    CreateProjectResponse: {"StatusCode":200,"ProjectId":"XXXX","RequestId":"XXX"}​
    ​
  1. 创建日志主题。​
  • 您可以通过 TLS Client 进行日志主题的管理,例如创建和删除日志主题。对应的参数设置请参考 API 文档。​
  • ​
    #include <ve-tls-cpp-sdk/TlsClient.h>​
    #include <ve-tls-cpp-sdk/TlsClientConfig.h>​
    #include <ve-tls-cpp-sdk/TlsRequest.h>​
    #include <ve-tls-cpp-sdk/TlsJsonConversion.h>​
    #include <ve-tls-cpp-sdk/TlsResponse.h>​
    ​
    int main(int argc, char **argv) {​
    ......​
    {​
    CreateTopicRequest request; {​
    request.topic_name = std::make_shared<std::string>("cpptesttopic");​
    request.project_id = std::make_shared<std::string>("XXX");​
    request.ttl = std::make_shared<int>(7);​
    request.shard_count = std::make_shared<int>(2);​
    request.auto_split = std::make_shared<bool>(true);​
    request.max_split_shard = std::make_shared<int>(50);​
    }​
    auto resp = client.CreateTopic(request);​
    }​
    ......​
    }​
    ​
  • 您将得到类似如下的响应:​
  • ​
    CreateTopicResponse: {"RequestId":"XXXX","StatusCode":200,"TopicId":"XXXX"}​
    ​
通过 TLS Client 上传日志​
您可以通过 TLS Client 向指定日志主题上传日志,相关示例代码如下。上传日志的参数设置请参考 API 文档。​
成功上传日志后,稍后您可以在控制台中查看实时采集到服务端的日志数据,或通过 SearchLogs 接口检索已上传的日志数据。​
​
#include <ve-tls-cpp-sdk/TlsClient.h>​
#include <ve-tls-cpp-sdk/TlsClientConfig.h>​
#include <ve-tls-cpp-sdk/TlsRequest.h>​
#include <ve-tls-cpp-sdk/TlsJsonConversion.h>​
#include <ve-tls-cpp-sdk/TlsResponse.h>​
​
int main(int argc, char **argv) {​
......​
// PutLogs​
{​
auto pb = std::make_shared<pb::LogGroupList>();​
auto log_group = pb->add_loggroups();​
auto log = log_group->add_logs();​
log->set_time(time(nullptr));​
auto log_content = log->add_contents();​
log_content->set_key("cpptestkey");​
log_content->set_value("cpptestvalue");​
PutLogsRequest request; {​
request.topic_id = std::make_shared<std::string>("XXX");​
request.log_group_list = pb;​
}​
auto resp = client.PutLogs(request);​
}​
......​
}​
​
使用 PutLogs V2接口上传日志​
定义 Protobuf 上传日志的方式较为繁琐,在对日志上传服务的性能要求不高的场景下,可以使用 TLS C++ SDK 提供的 PutLogs V2 接口,无需组装复杂的日志结构,使用语言原生内置的数据结构即可完成日志上传。示例代码如下:​
​
#include <ve-tls-cpp-sdk/TlsClient.h>​
#include <ve-tls-cpp-sdk/TlsClientConfig.h>​
#include <ve-tls-cpp-sdk/TlsRequest.h>​
#include <ve-tls-cpp-sdk/TlsJsonConversion.h>​
#include <ve-tls-cpp-sdk/TlsResponse.h>​
​
int main(int argc, char **argv) {​
......​
PutLogsV2Request request; {​
request.topic_id = std::make_shared<std::string>("XXX");​
request.source = std::make_shared<std::string>("sdkut");​
request.filename = std::make_shared<std::string>("utstdout");​
request.logs = std::make_shared<std::vector<LogItem>>();​
request.logs->push_back(LogItem());​
(*request.logs)[0].log_content["cpptestkey"] = "cpptestvalue";​
}​
client.PutLogsV2(request);​
......​
}​
​
​
最近更新时间:2026.09.21 17:50:15
这个页面对您有帮助吗?
有用
有用
无用
无用