All Products
Search
Document Center

Simple Log Service:Mengonsumsi log dengan API

Last Updated:Mar 26, 2026

Simple Log Service menyediakan SDK untuk berbagai bahasa pemrograman yang mencakup API konsumsi log. Topik ini memberikan contoh cara mengonsumsi log menggunakan Java SDK.

Prasyarat

Informasi latar belakang

Anda dapat memanggil operasi PullLogs untuk mengambil data log dari posisi kursor tertentu. Simple Log Service mendukung aplikasi yang ditulis dalam Java, Python, dan Go untuk mengonsumsi data baik sebagai konsumen individual maupun sebagai bagian dari consumer group.

Simple Log Service mendukung SPL dalam berbagai skenario, termasuk konsumsi real-time, kueri berbasis pemindaian (scan-based queries), dan pengumpulan Logtail. Untuk informasi selengkapnya, lihat Sintaks SPL.

Mengonsumsi log dengan Java SDK

Pastikan Anda telah menginstal Java SDK untuk Simple Log Service. Untuk informasi selengkapnya, lihat Instal Java SDK.

Konsumsi melalui SDK

Contoh ini menunjukkan cara membaca data log dengan memanggil operasi PullLogs.

Parameter

Parameter

Tipe

Wajib

Deskripsi

project

string

Ya

Project name: Project adalah unit manajemen sumber daya di Simple Log Service. Project berfungsi sebagai batas utama untuk isolasi multi-user dan kontrol akses. Untuk informasi selengkapnya, lihat Kelola project.

Logstore

string

Ya

Logstore name: Logstore adalah unit untuk mengumpulkan, menyimpan, dan mengkueri data log di Simple Log Service. Untuk informasi selengkapnya, lihat Kelola Logstore.

shardId

int

Ya

ID shard di Logstore.

Tambahkan dependensi Maven

Tambahkan dependensi berikut ke file pom.xml di direktori root proyek Anda:

<dependency>
  <groupId>com.google.protobuf</groupId>
  <artifactId>protobuf-java</artifactId>
  <version>2.5.0</version>
</dependency>
<dependency>
<groupId>com.aliyun.openservices</groupId>
  <artifactId>aliyun-log</artifactId>
  <version>0.6.99</version>
</dependency>

Buat file PullLogsDemo.java

Kode contoh:

import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.Consts;
import com.aliyun.openservices.log.common.LogGroupData;
import com.aliyun.openservices.log.common.Shard;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.request.PullLogsRequest;
import com.aliyun.openservices.log.response.ListShardResponse;
import com.aliyun.openservices.log.response.PullLogsResponse;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class PullLogsDemo {
    // Titik akhir Simple Log Service. Pada contoh ini, digunakan titik akhir untuk wilayah China (Hangzhou). Untuk wilayah lain, ganti dengan titik akhir yang sesuai.
    private static final String endpoint = "cn-hangzhou.log.aliyuncs.com";
    // Membaca AccessKey ID dan AccessKey Secret dari variabel lingkungan.
    private static final String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
    private static final String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    // Nama project.
    private static final String project = "your_project";
    // Nama Logstore.
    private static final String logStore = "your_logstore";

    public static void main(String[] args) throws Exception {
        // Membuat klien Simple Log Service.
        Client client = new Client(endpoint, accessKeyId, accessKeySecret);
        // Menampilkan daftar shard di Logstore.
        ListShardResponse resp = client.ListShard(project, logStore);
        System.out.printf("%s memiliki %d shard\n", logStore, resp.GetShards().size());
        Map<Integer, String> cursorMap = new HashMap<Integer, String>();
        for (Shard shard : resp.GetShards()) {
            int shardId = shard.getShardId();
            // Mendapatkan kursor untuk memulai konsumsi dari awal shard. Untuk memulai dari akhir, gunakan Consts.CursorMode.END.
            cursorMap.put(shardId, client.GetCursor(project, logStore, shardId, Consts.CursorMode.BEGIN).GetCursor());
        }
        try {
            while (true) {
                // Menarik log dari setiap shard.
                for (Shard shard : resp.GetShards()) {
                    int shardId = shard.getShardId();
                    PullLogsRequest request = new PullLogsRequest(project, logStore, shardId, 1000, cursorMap.get(shardId));
                    PullLogsResponse response = client.pullLogs(request);
                    // Log dikembalikan dalam bentuk LogGroups. Anda dapat memprosesnya sesuai logika bisnis Anda.
                    List<LogGroupData> logGroups = response.getLogGroups();
                    System.out.printf("Mendapatkan %d LogGroup dari logStore:%s:\tShard:%d\n", logGroups.size(), logStore, shardId);
                    // Setelah memproses log yang ditarik, simpan kursor untuk penarikan berikutnya.
                    cursorMap.put(shardId, response.getNextCursor());
                }
            }
        } catch (LogException e) {
            System.out.println("kode error :" + e.GetErrorCode());
            System.out.println("pesan error :" + e.GetErrorMessage());
            throw e;
        }
    }
}

Konsumsi dengan SPL

Contoh ini menunjukkan cara menggunakan SPL untuk memfilter data log saat memanggil operasi PullLogs.

Parameter

Parameter

Tipe

Wajib

Deskripsi

project

string

Ya

Project name: Project adalah unit manajemen sumber daya di Simple Log Service. Project berfungsi sebagai batas utama untuk isolasi multi-user dan kontrol akses. Untuk informasi selengkapnya, lihat Kelola project.

Logstore

string

Ya

Logstore name: Logstore adalah unit untuk mengumpulkan, menyimpan, dan mengkueri data log di Simple Log Service. Untuk informasi selengkapnya, lihat Kelola Logstore.

shardId

int

Ya

ID shard di Logstore.

Tambahkan dependensi Maven

Tambahkan dependensi berikut ke file pom.xml di direktori root proyek Anda:

<dependency>
  <groupId>com.google.protobuf</groupId>
  <artifactId>protobuf-java</artifactId>
  <version>2.5.0</version>
</dependency>
<dependency>
<groupId>com.aliyun.openservices</groupId>
  <artifactId>aliyun-log</artifactId>
  <version>0.6.99</version>
</dependency>

Buat PullLogsWithSPLDemo.java file

Kode contoh:

import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.*;
import com.aliyun.openservices.log.common.Consts;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.request.PullLogsRequest;
import com.aliyun.openservices.log.response.ListShardResponse;
import com.aliyun.openservices.log.response.PullLogsResponse;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class PullLogsWithSPLDemo {
    // Titik akhir Simple Log Service. Pada contoh ini, digunakan titik akhir untuk wilayah China (Hangzhou). Untuk wilayah lain, ganti dengan titik akhir yang sesuai.
    private static final String endpoint = "cn-hangzhou.log.aliyuncs.com";
    // Membaca AccessKey ID dan AccessKey Secret dari variabel lingkungan.
    private static final String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
    private static final String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    // Nama project.
    private static final String project = "your_project";
    // Nama Logstore.
    private static final String logStore = "your_logstore";

    public static void main(String[] args) throws Exception {
        // Membuat klien Simple Log Service.
        Client client = new Client(endpoint, accessKeyId, accessKeySecret);
        // Menampilkan daftar shard di Logstore.
        ListShardResponse resp = client.ListShard(project, logStore);
        System.out.printf("%s memiliki %d shard\n", logStore, resp.GetShards().size());
        Map<Integer, String> cursorMap = new HashMap<Integer, String>();
        for (Shard shard : resp.GetShards()) {
            int shardId = shard.getShardId();
            // Mendapatkan kursor untuk memulai konsumsi dari awal shard. Untuk memulai dari akhir, gunakan Consts.CursorMode.END.
            cursorMap.put(shardId, client.GetCursor(project, logStore, shardId, Consts.CursorMode.BEGIN).GetCursor());
        }
        try {
            while (true) {
                // Menarik log dari setiap shard.
                for (Shard shard : resp.GetShards()) {
                    int shardId = shard.getShardId();
                    PullLogsRequest request = new PullLogsRequest(project, logStore, shardId, 1000, cursorMap.get(shardId));
                    request.setQuery("* | where cast(body_bytes_sent as bigint) > 14000");
                    request.setPullMode("scan_on_stream");
                    PullLogsResponse response = client.pullLogs(request);
                    // Log dikembalikan dalam bentuk LogGroups. Anda dapat memprosesnya sesuai logika bisnis Anda.
                    List<LogGroupData> logGroups = response.getLogGroups();
                    System.out.printf("Mendapatkan %d LogGroup dari logStore:%s:\tShard:%d\n", logGroups.size(), logStore, shardId);

                    // Setelah memproses log yang ditarik, simpan kursor untuk penarikan berikutnya.
                    cursorMap.put(shardId, response.getNextCursor());
                }
            }
        } catch (LogException e) {
            System.out.println("kode error :" + e.GetErrorCode());
            System.out.println("pesan error :" + e.GetErrorMessage());
            throw e;
        }
    }
}

Referensi