tencent cloud

Cloud Log Service

C++ SDKによるログアップロード

ダウンロード
フォーカスモード
フォントサイズ
最終更新日: 2026-10-12 15:13:59
AI翻訳
本文では、CLSのC++ SDKを使用してログアップロードを迅速に実行する方法について説明します。SDKの使用方法の詳細については、コードリポジトリtencentcloud-cls-sdk-c++をご覧ください。

前提条件

TencentCloud APIキー情報accesskeyidとaccessKeysecretを作成して取得してください。キー情報の取得については、APIキー管理にアクセスしてください。
また、キーに関連付けられたアカウントに、対応するSDKログアップロード権限が付与されていることを確認してください。

開発環境の準備

C++ SDKをインストールする前に、C++言語の開発環境を準備する必要があります。以下のコマンドを参考に開発環境をインストールできます。
# コンパイルツールと依存関係をインストールします(C++が未インストールの場合は使用できます)
sudo yum install gcc gcc-c++ automake autoconf libtool make
sudo yum install cmake

C++ SDKのインストール

依存関係のインストール

C++ SDKのインストールにはprotobufへの依存が必要です。以下のコマンドを実行してprotobufをインストールしてください。
# protobufを手動でダウンロードします
wget https://github.com/protocolbuffers/protobuf/archive/v2.6.1.tar.gz
# ソースコードを解凍します
tar -xzf v2.6.1.tar.gz
# 解凍後のディレクトリに移動します
cd protobuf-2.6.1
# 設定ファイルを生成します。この手順の実行が進まない、またはタイムアウトエラーが発生した場合は、下記の【よくあるエラー処理】を参照してください。
./autogen.sh
# 設定とインストール
./configure
#コンパイルします。この手順は少し時間がかかる場合がありますので、しばらくお待ちください。
make
sudo make install
sudo ldconfig

SDKのダウンロードとインストール

Tencent Cloud CLSのC++ SDKをダウンロードしてインストールします。
# CLS SDKをダウンロードします。
git clone https://github.com/TencentCloud/tencentcloud-cls-sdk-cpp.git
# ディレクトリに移動します。
cd tencentcloud-cls-sdk-cpp
# 依存関係をインストールします。
sudo yum install boost-devel
sudo yum install openssl-devel
sudo yum install libcurl-devel
# ビルドファイルを生成します。
cmake .
# SDKをコンパイルします。
make
sudo make install

サンプルの実行

CLS SDK Demoのclsフォルダにあるログアップロードコードsample.cppを例にすると、コードの解析は以下の通りです。実際に使用する際は、コード内のキーなどの情報を置き換えてから実行してください。
1. サンプルコードをコンパイルします。
# サンプルコードをコンパイルします。
g++ -o sample ./cls/sample.cpp -std=c++11 -O2 -L/root/tencentcloud-cls-sdk-cpp-main -lclssdk -lcurl -lprotobuf -lssl -lcrypto -lboost_thread
2. コンパイル後のサンプルファイルを実行して、ログをアップロードします。実行中にerror while.....エラーが発生した場合は、よくあるエラー処理を参照してください。
./sample
以下のような出力が表示された場合、ログのアップロードが成功したことを示します。
statusCode:200 requestId: content: bodyBytes:49 header:key:Content-Length value:0 header:key:Date value:Wed, 20 Nov 2024 03:37:25 GMT header:key:X-Cls-Requestid value:e7329d6d-9a48-4091-bb0c-5cea8d1c6f48 header:key:X-Cls-Trace-Id value: header:key:x-cls-requestid value:

リクエストパラメータ

変数
タイプ
必須/任意
説明
endpoint
String
はい
ドメイン情報です。入力時は、利用可能なリージョンのAPIアップロードログタブにあるドメインをご参照ください。
accesskeyid
String
はい
TencentCloud APIキー情報です。キー情報の取得はAPIキー管理にアクセスしてください。また、キーに関連付けられたアカウントに、対応するSDKログアップロード権限が付与されていることを確認してください。
accessKeysecret
String
はい
TencentCloud APIキー情報です。キー情報の取得はAPIキー管理にアクセスしてください。また、キーに関連付けられたアカウントに、対応するSDKログアップロード権限が付与されていることを確認してください。
topic
String
はい
ログトピックのID情報です。

ログアップロードのサンプルコード

以下のコードは、SDKのデモファイルにあるsample.cppを例として、SDKを呼び出してログアップロード操作を完了する方法を示しています。サンプルコードは以下の通りです。
TencentCloud APIキー情報を平文でプロジェクトコードに保存することは推奨しません。環境変数を通じてTencentCloud APIキー情報を動的に取得できます。具体的な操作については、環境変数の設定を参照してください。
#include "cls/producerclient.h"
#include "cls/common.h"
#include "cls/cls_logs.pb.h"
#include "cls/logproducerconfig.pb.h"
#include <string>
#include <iostream>
#include <unistd.h>
#include <cstdlib>
#include "cls/result.h"
#include "cls/error.h"
using namespace tencent_log_sdk_cpp_v2;
using namespace std;


class UserResult : public CallBack
{
public:
UserResult() = default;
~UserResult() = default;
void Success(PostLogStoreLogsResponse result) override { std::cout << result.Printf() << std::endl; }
void Fail(PostLogStoreLogsResponse result) override
{
std::cout << result.Printf() << std::endl;
// std::cout<<result.loggroup_.ShortDebugString().c_str()<<std::endl;
}
};


int main()
{
cls_config::LogProducerConfig config;
// ドメイン名情報を入力してください。入力ガイド:https://www.tencentcloud.com/document/product/614/18940#.E5.9F.9F.E5.90.8D。リンク内のAPIログアップロードタブにあるドメイン名を参照してください。
config.set_endpoint("ap-xxxxxxx.cls.tencentcs.com");

// TencentCloud APIキー情報を入力してください。キー情報の取得は、https://console.tencentcloud.com/cam/capi にアクセスしてください。
// また、キーに関連付けられたアカウントに、対応するログアップロード権限が付与されていることを確認してください。権限設定ガイド:https://www.tencentcloud.com/document/product/614/45004#.E4.BD.BF.E7.94.A8-api-.E4.B8.8A.E4.BC.A0.E6.95.B0.E6.8D.AE
// このサンプルでは環境変数から取得します。環境変数の設定ガイド:https://www.tencentcloud.com/document/product/614/113851?from_cn_redirect=1
config.set_acceskeyid(getenv("TENCENTCLOUD_SECRET_ID"));
config.set_accesskeysecret(getenv("TENCENTCLOUD_SECRET_KEY"));

// アップロードするログのトピックIDを設定し、お客様のトピックIDに置き換えてください。
std::string topic = "xxxxxxxxxxxxxxxxxxxxxxxxx";
auto client = std::make_shared<ProducerClient>(config);
auto callback = std::make_shared<UserResult>();

client->Start();
// ログオブジェクトを作成します。
cls::Log log;
// 現在時刻をログ時間として設定します。
log.set_time(time(NULL));
// ログデータの内容を構築します。
auto content = log.add_contents();
// ログ内容のキー・バリュー情報を設定します。
content->set_key("content");
content->set_value("this my test");
// ログを送信し、返却結果を取得します。
PostLogStoreLogsResponse ret = client->PostLogStoreLogs(topic, log, callback);
if(ret.statusCode != 0){
cout<<ret.content<<endl;
}
client->LogProducerEnvDestroy();

return 0;
}


よくあるエラーの対処

./autogen.sh実行時にタイムアウトして停止する

1. protobufディレクトリで、 googletestファイルを手動でダウンロードします。
# ファイルをダウンロードし、解凍して名前を変更します(実行コードに合わせるため)。
wget https://github.com/google/googletest/archive/release-1.5.0.tar.gz
tar -xzf googletest-release-1.5.0
mv googletest-release-1.5.0 gtest
2. protobufディレクトリで、続けて./autogen.shを実行します。
# コマンドを実行します。
./autogen.sh

実行ファイル./sample実行時のエラー

./sample: error while loading shared libraries: libprotobuf.so.9: cannot open shared object file: No such file or directory
1. protobuf.soファイルの場所を確認し、以下のコマンドを実行します:
whereis libprotobuf.so.9
2. cat /etc/ld.so.confを実行し、最初の手順のパスがあるかどうかを確認します。



3. もし存在しない場合は、最初の手順で出力されたパスをld.so.confに追加します。上図を例にすると、/usr/local/libをld.so.confに追加する必要があります。
4. コマンドラインでldconfigを実行し、ファイルをロードします。
ldconfig

おわりに

以上の手順により、Tencent Cloud CLSのC++ SDKを使用してログのアップロード操作を迅速に完了できます。問題が発生した場合は、お問い合わせください。


ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック