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

開発環境の準備

C言語開発環境のインストール

お使いのオペレーティングシステムに応じて、C言語のコンパイル環境と必要な開発ツールをインストールします。例えば、CentOSでは、以下のコマンドを使用して開発ツールと依存ライブラリをインストールできます:
sudo yum groupinstall "Development Tools"
sudo yum install glibc-devel cmake openssl-devel git
sudo yum install libcurl-devel

C SDKのインストール

1. C SDKをダウンロードします:C SDKのリポジトリをローカルにクローンします。
git clone https://github.com/TencentCloud/tencentcloud-cls-sdk-c.git
2. demo内のコードを変更します。
SDKのdemoディレクトリには、サンプルコードlog_post.cがあります。コードの説明は以下の通りです。必要に応じてサンプルコードを変更し、その中のEndpoint、AccessId、AccessKey、Topicパラメータを実際の情報に置き換えてください。
cd tencentcloud-cls-sdk-c/demo
3. SDKディレクトリに戻って入り、cmakeとmakeツールを使用してSDKをコンパイルしてインストールします。
cd ..
# ビルドファイルを生成します。
cmake .
# SDKをコンパイルします。
make

サンプルプログラムのコンパイルと実行

コンパイル済みのプログラムを実行し、ログをアップロードします。
# 実行可能ファイルのディレクトリに入ります。
cd build/bin
# プログラムを実行します。
./post_log_demo

リクエストパラメータ

変数
タイプ
必須/任意
説明
Endpoint
String
はい
ドメイン情報です。入力時は、利用可能なリージョンのAPIアップロードログタブに記載されているドメインをご参照ください。
AccessId
String
はい
TencentCloud APIキー情報です。キー情報の取得は、APIキー管理で行ってください。また、キーに関連付けられたアカウントに、対応するSDKログアップロード権限が付与されていることを確認してください。
AccessKey
String
はい
TencentCloud APIキー情報です。キー情報の取得は、APIキー管理で行ってください。また、キーに関連付けられたアカウントに、対応するSDKログアップロード権限が付与されていることを確認してください。
Topic
String
はい
日志主题的 ID 信息。

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

以下は、C SDKを使用してログをアップロードする方法を示す簡略化されたサンプルコードです。
TencentCloud APIキー情報を平文でプロジェクトコードに保存することは推奨しません。環境変数を通じてTencentCloud APIキー情報を動的に取得できます。具体的な操作については、環境変数の設定を参照してください。
#include "log_producer_config.h"
#include "log_producer_client.h"
#include "log_error.h"
#include <stdio.h>
#include <stdlib.h>

void callback(const char *config_name, int result, size_t log_bytes, size_t compressed_bytes, const char *req_id, const char *message, const unsigned char *raw_buffer)
{
if (result == LOG_PRODUCER_OK)
{
if (req_id == NULL)
{
req_id = "";
}
printf("send success, config : %s, result : %d, log bytes : %d, compressed bytes : %d, request id : %s \\n",
config_name, (result),
(int)log_bytes, (int)compressed_bytes, req_id);
}
else
{
if (message == NULL)
{
message = "";
}
if (req_id == NULL)
{
req_id = "";
}
printf("send fail, config : %s, result : %d, log bytes : %d, compressed bytes : %d, request id : %s, error message : %s\\n",
config_name, (result),
(int)log_bytes, (int)compressed_bytes, req_id, message);
}
}

clslogproducer *ConstructorLogProducer(SendCallBackFunc notifyFunc)
{
//malloch関数を呼び出してメモリを確保し、デフォルトの設定を初期化します。
ProducerConfig *config = ConstructLogConfig();
// ドメイン名情報を入力してください。ドメイン名については、リンク内のAPIアップロードログタブにあるドメイン名を参照してください:https://www.tencentcloud.com/document/product/614/18940#.E5.9F.9F.E5.90.8D
SetEndpoint(config, "ap-xxxxxxxxx.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
SetAccessId(config, getenv("TENCENTCLOUD_SECRET_ID"));
SetAccessKey(config, getenv("TENCENTCLOUD_SECRET_KEY"));
// アップロードするログのトピックIDを設定し、お客様のTopic IDに置き換えます。
SetTopic(config, "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
SetPackageLogBytes(config, 4 * 1024 * 1024);
setPackageTimeout(config, 3000);
SetMaxBufferLimit(config, 64 * 1024 * 1024);
set_send_thread_count(config, 4);
SetCompressType(config, 1);
SetConnectTtimeoutSec(config, 10);
SetSendTimeoutSec(config, 15);
return ConstructorClsLogProducer(config, notifyFunc, NULL);
}

void post_logs()
{
if (ClsLogProducerInit(LOG_GLOBAL_ALL) != LOG_PRODUCER_OK)
{
printf("ClsLogProducerInit init fail \\n");
exit(1);
}
clslogproducer *producer = ConstructorLogProducer(callback);
if (producer == NULL)
{
printf("create log producer by config fail \\n");
exit(1);
}

clslogproducerclient *client = GetClsLogProducer(producer, NULL);
if (client == NULL)
{
printf("create log producer client by config fail \\n");
exit(1);
}
int i = 0;
for (; i < 10; ++i)
{
char indexStr[32];
sprintf(indexStr, "%d", i);

int rst = PostClsLog(client, 20, "key1", "value_1",
"key2", "value_2",
"key3", "value_3",
"key4", "value_4",
"key5", "value_5",
"key6", "value_6",
"key7", "value_7",
"key8", "value_8",
"key9", "value_9",
"index", indexStr);
if (rst != LOG_PRODUCER_OK)
{
printf("add log error %d \\n", rst);
}
}

DestructorClsLogProducer(producer);

ClsLogProducerDestroy();
}

int main(int argc, char *argv[])
{
post_logs();
return 0;
}

まとめ

以上の手順により、C SDKを使用してログをクラウドサービスにアップロードすることをすぐに開始できます。必要な設定がすべて正しく行われていることを確認し、必要に応じてサンプルコードを調整してください。問題が発生した場合は、お問い合わせください。

ヘルプとサポート

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

フィードバック