All Products
Search
Document Center

Simple Log Service:Mulai menggunakan Simple Log Service SDK untuk C++

Last Updated:Apr 11, 2026

Topik ini menjelaskan cara memulai penggunaan Simple Log Service SDK untuk C++ dan melakukan operasi umum.

Prasyarat

  • Anda memiliki kredensial akses.

  • Peroleh titik akhir.

    Titik akhir adalah URL yang digunakan klien Anda untuk mengakses Layanan Alibaba Cloud. Titik akhir tersebut menentukan detail seperti protokol, hostname, dan port.

    • Titik akhir publik: Anda dikenai biaya atas lalu lintas Internet keluar saat menarik data dari titik akhir publik Simple Log Service. Untuk informasi lebih lanjut tentang penagihan, lihat Item penagihan untuk mode bayar berdasarkan data yang diingest dan Item penagihan untuk mode bayar berdasarkan fitur. Untuk daftar lengkap titik akhir, lihat Titik akhir.

    • Titik akhir VPC: Jika Anda mengakses Simple Log Service dari layanan Alibaba Cloud lainnya di wilayah yang sama dengan proyek Anda, gunakan titik akhir VPC. Untuk informasi lebih lanjut, lihat Titik akhir.

    • Transfer Acceleration nama domain: Jika server aplikasi dan proyek Simple Log Service Anda berada di wilayah yang berbeda, gunakan nama domain Transfer Acceleration untuk menghindari latensi jaringan tinggi dan potensi ketidakstabilan saat menggunakan titik akhir publik. Untuk informasi lebih lanjut, lihat Mengelola Transfer Acceleration.

  • Simple Log Service SDK untuk C++ telah diinstal. Untuk informasi lebih lanjut, lihat Instal Simple Log Service SDK untuk C++.

Kode contoh

LogClient adalah klien C++ yang dapat Anda gunakan untuk mengelola sumber daya Simple Log Service, seperti Proyek dan penyimpanan log. Sebelum menggunakan Simple Log Service SDK untuk C++ untuk mengirim permintaan, Anda harus menginisialisasi instance klien. Contoh:

#include "client.h"
#include "common.h"
#include <string>
#include <cstdlib>
#include <iostream>
#include <unistd.h>
using namespace aliyun_log_sdk_v6;
using namespace std;
int main(int argc,char ** argv)
{
    // Titik akhir untuk Simple Log Service. Contoh ini menggunakan titik akhir untuk wilayah China (Hangzhou). Gantilah dengan titik akhir untuk wilayah Anda yang sebenarnya.
    string endpoint = "cn-hangzhou.log.aliyuncs.com";
    // Contoh ini memperoleh ID AccessKey dan AccessKey Secret dari variabel lingkungan.
    string accessKeyId = (string)getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
    string accessKey = (string)getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    // Nama proyek.
    string project = "";
    // Nama penyimpanan log.
    string logstore = "";
    // Topik log.
    string topic = "";
    // Client Simple Log Service.
    LOGClient * ptr = new LOGClient(endpoint,accessKeyId,accessKey,LOG_REQUEST_TIMEOUT,"127.0.0.1",false);
    // Buat data log.
    vector<LogItem> logGroup;
    for (int i = 0;i < 1;++i)
    {
        logGroup.push_back(LogItem());
        LogItem & item =  logGroup.back();
        item.timestamp = time(NULL) ;
        item.source="127.0.0.1";
        item.topic=topic;
        item.data.push_back(make_pair<string,string>("status","200"));
        item.data.push_back(make_pair<string,string>("latency","126"));
    }
    try{
        // Tulis log.
        ptr -> DeleteConsumerGroup(project,logstore,"test-consumer-group");
        uint32_t shardId = 2;
        int32_t beginTime =  time(NULL);
        ptr -> PostLogStoreLogs(project,logstore,topic,logGroup);
        sleep(1);
        ptr -> PostLogStoreLogs(project,logstore,topic,logGroup);
        sleep(1);
        int32_t endTime = time(NULL);
        ptr -> PostLogStoreLogs(project,logstore,topic,logGroup);
        sleep(1);
        ptr -> PostLogStoreLogs(project,logstore,topic,logGroup);
        sleep(1);
        // Kueri log.
        GetCursorResponse beginCursorResp = ptr->GetCursor(project, logstore, shardId, beginTime);
        GetCursorResponse endCursorResp = ptr->GetCursor(project, logstore, shardId, endTime);
        GetBatchLogResponse getLogResp = ptr->GetBatchLog(project, logstore, shardId, 1000, beginCursorResp.result);
        cout << getLogResp.result.logGroups.size() << "\t" << getLogResp.result.logGroupCount << endl;
        getLogResp = ptr->GetBatchLog(project, logstore, 2, 1000, beginCursorResp.result, endCursorResp.result);
        cout << getLogResp.result.logGroups.size() << "\t" << getLogResp.result.logGroupCount << endl;

        ListConsumerGroupResponse lrs = ptr -> ListConsumerGroup(project, logstore);
        for(int i = 0; i < lrs.consumerGroups.size(); ++i)
            cout<<lrs.consumerGroups[i].GetConsumerGroupName()<<", " <<lrs.consumerGroups[i].GetTimeoutInSec()<<", " <<lrs.consumerGroups[i].GetInOrder()<<endl;
        ptr->UpdateCheckpoint(project, logstore, "hahhah", 0, "V0hBVFRIRlVDSw==");
        ListCheckpointResponse lcps = ptr -> ListCheckpoint(project, logstore, "hahhah");
        for(int i =0; i < lcps.consumerGroupCheckpoints.size(); ++i)
        {
            cout<<lcps.consumerGroupCheckpoints[i].GetShard() <<", " << lcps.consumerGroupCheckpoints[i].GetCheckpoint()<<", "<<lcps.consumerGroupCheckpoints[i].GetUpdateTime()<<endl;
        }
        while(true){
            HeartbeatResponse resp = ptr->ConsumerGroupHeartbeat(project, logstore, "hahhah", "cc1", std::vector<uint32_t>());
            cout<<"cc1, heartbeat: ";
            for(std::vector<uint32_t>::const_iterator it = resp.shards.begin(); it != resp.shards.end(); ++it)
                cout<<*it<<", ";
            cout<<endl;
            resp = ptr->ConsumerGroupHeartbeat(project, logstore, "hahhah", "cc2", std::vector<uint32_t>());
            cout<<"cc2, heartbeat: ";
            for(std::vector<uint32_t>::const_iterator it = resp.shards.begin(); it != resp.shards.end(); ++it)
                cout<<*it<<", ";
            cout<<endl;
            usleep(2 * 1000 * 1000);
        }
    }
    catch(LOGException & e)
    {
        cout<<e.GetErrorCode()<<":"<<e.GetMessage()<<endl;
    }
    delete ptr;
}