全部产品
Search
文档中心

Simple Log Service:Gunakan GetLogs untuk mengkueri log

更新时间:Nov 09, 2025

Setelah mengumpulkan log, Anda dapat memanggil operasi GetLogs untuk mengkueri log yang telah dikumpulkan. Topik ini memberikan contoh cara mengkueri log menggunakan operasi GetLogs.

Prasyarat

Catatan penggunaan

  • Dalam contoh ini, endpoint publik Simple Log Service untuk Wilayah China (Hangzhou) digunakan. Endpoint: https://cn-hangzhou.log.aliyuncs.com.

    Jika Anda ingin mengakses Simple Log Service dari layanan Alibaba Cloud lainnya yang berada di wilayah yang sama dengan Proyek Anda, Anda dapat menggunakan endpoint internal Simple Log Service, yaitu https://cn-hangzhou-intranet.log.aliyuncs.com.

    Untuk informasi lebih lanjut tentang Wilayah dan endpoint yang didukung oleh Simple Log Service, lihat Endpoints.

  • Panggil metode IsCompleted() dalam objek tanggapan dari SDK untuk memeriksa apakah kueri mengembalikan set hasil yang lengkap.

    • Jika metode IsCompleted() mengembalikan true, kueri berhasil dan set hasilnya lengkap.

    • Jika metode IsCompleted() mengembalikan false, kueri berhasil tetapi set hasilnya tidak lengkap. Anda harus mengulangi permintaan untuk mendapatkan hasil penuh. Untuk informasi lebih lanjut tentang hasil kueri yang tidak lengkap, lihat Kemungkinan Penyebab Kueri yang Tidak Akurat.

Parameter

Parameter permintaan

Nama

Tipe

Diperlukan

Deskripsi

project

String

Ya

Nama dari proyek. Proyek dalam Simple Log Service digunakan untuk mengisolasi sumber daya pengguna yang berbeda dan mengontrol akses ke sumber daya tertentu. Lihat Kelola sebuah proyek.

logstore

String

Ya

Nama dari penyimpanan log. Penyimpanan log dalam Simple Log Service digunakan untuk mengumpulkan, menyimpan, dan menanyakan log. Lihat Kelola sebuah penyimpanan log.

from

int

Ya

Awal rentang waktu untuk kueri. Nilainya adalah Stempel waktu UNIX.

Catatan
  • Waktu ketika penyimpanan log menerima log. Bidang __tag__:__receive_time__ adalah bidang tercadang dari Simple Log Service.

  • Rentang waktu yang didefinisikan oleh waktu mulai dan waktu akhir. Rentang waktu adalah interval tertutup di sebelah kiri dan terbuka di sebelah kanan. Interval mencakup waktu mulai dari rentang waktu, tetapi tidak termasuk waktu akhir. Jika keduanya sama, interval tersebut tidak valid dan kesalahan akan dikembalikan.

  • Untuk memastikan bahwa data lengkap dapat ditanyakan, tentukan rentang waktu kueri yang akurat hingga menit. Jika Anda juga menentukan rentang waktu dalam pernyataan analitik, rentang waktu tersebut digunakan untuk kueri dan analisis.

  • Jika Anda ingin menentukan rentang waktu yang akurat hingga detik, Anda dapat menggunakan fungsi tanggal dan waktu untuk mengonversi format waktu. Contoh:

    • * | SELECT * FROM log WHERE from_unixtime(__time__) > from_unixtime(1664186624) AND from_unixtime(__time__) < now()

    • * | SELECT * FROM log WHERE __time__ > to_unixtime(date_parse('2022-10-19 15:46:05', '%Y-%m-%d %H:%i:%s')) AND __time__ < to_unixtime(now())

to

int

Ya

Akhir rentang waktu untuk kueri. Nilainya adalah Stempel waktu UNIX.

Catatan
  • Waktu ketika penyimpanan log menerima log. Bidang __tag__:__receive_time__ adalah bidang tercadang dari Simple Log Service.

  • Rentang waktu yang didefinisikan oleh waktu mulai dan waktu akhir. Rentang waktu adalah interval tertutup di sebelah kiri dan terbuka di sebelah kanan. Interval mencakup waktu mulai dari rentang waktu, tetapi tidak termasuk waktu akhir. Jika keduanya sama, interval tersebut tidak valid dan kesalahan akan dikembalikan.

  • Untuk memastikan bahwa data lengkap dapat ditanyakan, tentukan rentang waktu kueri yang akurat hingga menit. Jika Anda juga menentukan rentang waktu dalam pernyataan analitik, rentang waktu tersebut digunakan untuk kueri dan analisis.

  • Jika Anda ingin menentukan rentang waktu yang akurat hingga detik, Anda dapat menggunakan fungsi tanggal dan waktu untuk mengonversi format waktu. Contoh:

    • * | SELECT * FROM log WHERE from_unixtime(__time__) > from_unixtime(1664186624) AND from_unixtime(__time__) < now()

    • * | SELECT * FROM log WHERE __time__ > to_unixtime(date_parse('2022-10-19 15:46:05', '%Y-%m-%d %H:%i:%s')) AND __time__ < to_unixtime(now())

topic

String

Tidak

Topik dari log. Nilai defaultnya adalah string kosong. Untuk informasi lebih lanjut, lihat Topik log.

query

String

Tidak

Pernyataan pencarian atau pernyataan analitik. Untuk informasi lebih lanjut, lihat Ikhtisar Kueri dan Analisis. Tambahkan set session parallel_sql=true; ke pernyataan analitik dalam parameter query untuk menggunakan SQL Eksklusif. Sebagai contoh, * | set session parallel_sql=true; select count(*) as pv. Untuk masalah umum kueri dan analisis, lihat Kesalahan umum dalam kueri dan analisis log.

Catatan

Jika parameter query berisi pernyataan analitik (pernyataan SQL), parameter baris dan offset dari operasi ini tidak valid. Atur parameter-parameter ini ke 0 dan gunakan klausa LIMIT dalam pernyataan SQL untuk paging. Untuk informasi lebih lanjut, lihat Paginasi hasil kueri dan analisis.

line

int

Tidak

Parameter ini hanya valid ketika parameter query berisi pernyataan pencarian. Ini menentukan jumlah maksimum log yang akan dikembalikan. Nilainya berkisar dari 0 hingga 100. Nilai defaultnya adalah 100.

offset

int

Tidak

Parameter ini hanya valid ketika parameter query berisi pernyataan pencarian. Ini menentukan baris dari mana kueri dimulai. Nilai defaultnya adalah 0.

reverse

boolean

Tidak

Menentukan apakah akan mengembalikan log dalam urutan menurun berdasarkan timestamp mereka. Presisi adalah hingga menit.

  • true: Mengembalikan log dalam urutan menurun berdasarkan timestamp mereka.

  • false (default): Mengembalikan log dalam urutan menaik berdasarkan timestamp mereka.

Penting
  • Parameter reverse hanya valid ketika parameter query berisi pernyataan pencarian. Ini menentukan urutan pengurutan untuk log yang dikembalikan.

  • Ketika parameter query berisi pernyataan kueri dan analisis, parameter reverse tidak valid. Urutan pengurutan ditentukan oleh klausa order by dalam pernyataan analitik SQL.

powerSql

boolean

Tidak

Menentukan apakah akan menggunakan Dedicated SQL. Untuk informasi lebih lanjut, lihat Kinerja tinggi dan kueri serta analisis akurat (Dedicated SQL).

  • true: Gunakan Dedicated SQL.

  • false (default): Gunakan Standard SQL.

Selain parameter powerSql, Anda juga dapat menggunakan parameter query untuk mengonfigurasi Dedicated SQL.

scan

boolean

Tidak

Jika scan disetel ke true, kueri menggunakan mode pemindaian.

forward

boolean

Tidak

Parameter ini hanya untuk kueri pemindaian. Jika forward disetel ke true, kueri mengambil halaman berikutnya. Jika tidak, kueri mengambil halaman sebelumnya.

Parameter respons

Untuk informasi lebih lanjut tentang parameter respons, lihat GetLogs - Kueri Log dalam Logstore.

Log mentah

body_bytes_sent:1750
host:www.example.com
http_referer:www.example.com
http_user_agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; it-it) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27
http_x_forwarded_for:203.0.XX.XX
remote_addr:203.0.XX.XX
remote_user:p288
request_length:13.741
request_method:GET
request_time:71
request_uri:/request/path-1/file-1
http_code:200
time_local:11/Agt/2021:06:52:27
upstream_response_time:0,66

Contoh kueri dan analisis log

Kode Java sampel berikut memberikan contoh cara mengkueri dan menganalisis log.

Penting

Saat Anda memanggil operasi GetLogs menggunakan Simple Log Service SDK for Java, perhatikan hal-hal berikut:

  • Jika parameter query hanya berisi pernyataan pencarian, seperti request_method:POST, Anda dapat menggunakan parameter line untuk menentukan jumlah log yang akan dikembalikan. Nilai maksimum untuk parameter ini adalah 100. Untuk mengembalikan lebih dari 100 log, Anda harus menggunakan klausa LIMIT dalam pernyataan SQL. Untuk informasi lebih lanjut, lihat klausa LIMIT.

  • Jika parameter query berisi pernyataan kueri dan analisis, seperti request_method:POST | SELECT host, COUNT(*) AS pv GROUP BY host LIMIT 5, parameter line diabaikan. Anda harus menggunakan klausa LIMIT dalam pernyataan SQL untuk menentukan jumlah baris yang akan dikembalikan. Untuk informasi lebih lanjut, lihat klausa LIMIT.

Untuk informasi lebih lanjut tentang pernyataan kueri, lihat Sintaksis Dasar.

Contoh 1: Meminta log menggunakan kata kunci

Contoh ini menunjukkan cara meminta log menggunakan kata kunci path-0/file-5. Sebuah file GetLogsTest.java dibuat untuk permintaan tersebut. Parameter line diatur ke 3 untuk menentukan bahwa tiga log akan dikembalikan.

import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.LogItem;
import com.aliyun.openservices.log.common.QueriedLog;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.request.GetLogsRequest;
import com.aliyun.openservices.log.response.GetLogsResponse;

public class GetLogsTest {

    public static void main(String[] args) throws LogException {
        // Contoh ini mendapatkan AccessKey ID dan Rahasia AccessKey dari variabel lingkungan.
        String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        // Masukkan nama proyek.
        String project = "your-project-name";
        // Atur titik akhir layanan Simple Log Service. Contoh ini menggunakan Hangzhou sebagai wilayah. Untuk wilayah lainnya, tentukan titik akhir yang sebenarnya.
        String host = "cn-hangzhou.log.aliyuncs.com";
        // Masukkan nama penyimpanan log.
        String logStore = "your-logstore-name";

        // Buat klien Simple Log Service.
        Client client = new Client(host, accessId, accessKey);

        // Jalankan permintaan dalam penyimpanan log yang ditentukan.
        try {
            // Gunakan kata kunci "path-0/file-5" untuk meminta log.
            String query = "path-0/file-5";

            int from = 1754449503;
            int to = 1754449510;

            // Dalam contoh ini, parameter permintaan digunakan untuk mengatur pernyataan pencarian. Parameter baris digunakan untuk mengontrol jumlah log yang dikembalikan. Nilainya adalah 3, dan nilai maksimumnya adalah 100.
            GetLogsRequest request = new GetLogsRequest(project, logStore, from, to, "", query);
            GetLogsResponse logsResponse = client.GetLogs(request);
            System.out.println("-------------Permintaan dimulai.-------------");
            System.out.println("Jumlah hasil permintaan yang dikembalikan :" + logsResponse.GetCount());
            System.out.println("waktu mulai adalah :" + from);
            System.out.println("waktu akhir adalah :" + to);
            for (QueriedLog log : logsResponse.getLogs()) {
                LogItem item = log.GetLogItem();
                System.out.println("waktu log : " + item.mLogTime);
                System.out.println("Jsonstring : " + item.ToJsonString());
            }
            System.out.println("-------------Permintaan selesai.-------------");

        } catch (LogException e) {
            System.out.println("LogException e :" + e.toString());
            System.out.println("kode kesalahan :" + e.GetErrorCode());
            System.out.println("pesan kesalahan :" + e.GetErrorMessage());
            throw e;
        }
    }
}

Tanggapan:

-------------Permintaan dimulai.-------------
Jumlah hasil permintaan yang dikembalikan :3
waktu mulai adalah :1644573549
waktu akhir adalah :1644573849
waktu log : 1644573808
Jsonstring : {"remote_addr":"203.0.XX.XX","__topic__":"nginx_access_log","request_uri":"/request/path-0/file-5"...}
waktu log : 1644573808
Jsonstring : {"remote_addr":"203.0.XX.XX","__topic__":"nginx_access_log","request_uri":"/request/path-0/file-5"...}
waktu log : 1644573788
Jsonstring : {"remote_addr":"203.0.XX.XX","__topic__":"nginx_access_log","request_uri":"/request/path-0/file-5"...}
-------------Permintaan selesai.-------------

Proses selesai dengan kode keluar 0

Contoh 2: Meminta log dengan menentukan bidang

Contoh ini menunjukkan cara meminta log di mana metode permintaan adalah POST. Sebuah file GetLogsTest.java dibuat untuk permintaan tersebut. Parameter line diatur ke 3 untuk menentukan bahwa tiga log akan dikembalikan.

import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.LogItem;
import com.aliyun.openservices.log.common.QueriedLog;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.request.GetLogsRequest;
import com.aliyun.openservices.log.response.GetLogsResponse;

public class GetLogsTest {

    public static void main(String[] args) throws LogException {
        // Dalam contoh ini, AccessKey ID dan Rahasia AccessKey diperoleh dari variabel lingkungan.
        String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        // Masukkan nama proyek.
        String project = "your-project-name";
        // Atur titik akhir Simple Log Service. Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Ganti nilainya dengan titik akhir yang sebenarnya.
        String host = "cn-hangzhou.log.aliyuncs.com";
        // Masukkan nama penyimpanan log.
        String logStore = "your-logstore-name";

        // Buat klien Simple Log Service.
        Client client = new Client(host, accessId, accessKey);

        // Jalankan permintaan dalam penyimpanan log yang ditentukan.
        try {
            // Permintaan log di mana metode permintaan adalah POST.
            String query = "request_method:POST";
            // Tetapkan rentang waktu untuk permintaan.
            int from = 1754449503;
            int to = 1754449510;

            // Dalam contoh ini, parameter permintaan menentukan pernyataan pencarian. Parameter baris menentukan jumlah log yang akan dikembalikan. Nilainya adalah 3. Nilai maksimumnya adalah 100.
            GetLogsRequest request = new GetLogsRequest(project, logStore, from, to, "", query, 3, 0, true);
            GetLogsResponse logsResponse = client.GetLogs(request);
            System.out.println("-------------Permintaan dimulai.-------------");
            System.out.println("Jumlah hasil permintaan yang dikembalikan :" + logsResponse.GetCount());
            System.out.println("waktu mulai adalah :" + from);
            System.out.println("waktu akhir adalah :" + to);
            for (QueriedLog log : logsResponse.getLogs()) {
                LogItem item = log.GetLogItem();
                System.out.println("waktu log : " + item.mLogTime);
                System.out.println("Jsonstring : " + item.ToJsonString());
            }
            System.out.println("-------------Permintaan selesai.-------------");

        } catch (LogException e) {
            System.out.println("LogException e :" + e.toString());
            System.out.println("kode kesalahan :" + e.GetErrorCode());
            System.out.println("pesan kesalahan :" + e.GetErrorMessage());
            throw e;
        }
    }
}

Tanggapan:

-------------Permintaan dimulai.-------------
Jumlah hasil permintaan yang dikembalikan :3
waktu mulai adalah :1644574151
waktu akhir adalah :1644574451
waktu log : 1644574438
Jsonstring : {"remote_addr":"203.0.XX.XX","__topic__":"nginx_access_log","body_bytes_sent":"3604","request_method":"POST"...}
waktu log : 1644574438
Jsonstring : {"remote_addr":"203.0.XX.XX","__topic__":"nginx_access_log","body_bytes_sent":"3369","request_method":"POST"...}
waktu log : 1644574438
Jsonstring : {"remote_addr":"203.0.XX.XX","__topic__":"nginx_access_log","body_bytes_sent":"12714","request_method":"POST"...}
-------------Permintaan selesai.-------------

Proses selesai dengan kode keluar 0

Contoh 3: Menganalisis log menggunakan pernyataan SQL

Contoh ini menunjukkan cara meminta log di mana metode permintaan adalah POST dan menghitung jumlah tampilan halaman (PV) untuk permintaan POST. Sebuah file GetLogsTest.java dibuat untuk permintaan tersebut.

import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.LogItem;
import com.aliyun.openservices.log.common.QueriedLog;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.request.GetLogsRequest;
import com.aliyun.openservices.log.response.GetLogsResponse;

public class GetLogsTest {

    public static void main(String[] args) throws LogException {
        // Dalam contoh ini, AccessKey ID dan Rahasia AccessKey diperoleh dari variabel lingkungan.
        String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        // Masukkan nama proyek.
        String project = "your-project-name";
        // Atur titik akhir Simple Log Service. Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Ganti nilainya dengan titik akhir yang sebenarnya.
        String host = "cn-hangzhou.log.aliyuncs.com";
        // Masukkan nama penyimpanan log.
        String logStore = "your-logstore-name";

        // Buat klien Simple Log Service.
        Client client = new Client(host, accessId, accessKey);

        // Jalankan permintaan dalam penyimpanan log yang ditentukan.
        try {
            // Permintaan log di mana metode permintaan adalah POST dan hitung jumlah PV untuk permintaan POST.
            String query = "request_method:POST|select COUNT(*) as pv";
            // Tetapkan rentang waktu untuk permintaan.
            int from = 1754449503;
            int to = 1754449510;

            // Dalam contoh ini, parameter permintaan diatur ke pernyataan kueri dan analisis. Parameter baris tidak valid.
            GetLogsRequest request = new GetLogsRequest(project, logStore, from, to, "", query);
            GetLogsResponse logsResponse = client.GetLogs(request);
            System.out.println("-------------Permintaan dimulai.-------------");
            System.out.println("Jumlah hasil permintaan yang dikembalikan :" + logsResponse.GetCount());
            System.out.println("waktu mulai adalah :" + from);
            System.out.println("waktu akhir adalah :" + to);
            for (QueriedLog log : logsResponse.getLogs()) {
                LogItem item = log.GetLogItem();
                System.out.println("waktu log : " + item.mLogTime);
                System.out.println("Jsonstring : " + item.ToJsonString());
            }
            System.out.println("-------------Permintaan selesai.-------------");

        } catch (LogException e) {
            System.out.println("LogException e :" + e.toString());
            System.out.println("kode kesalahan :" + e.GetErrorCode());
            System.out.println("pesan kesalahan :" + e.GetErrorMessage());
            throw e;
        }
    }
}

Tanggapan:

-------------Permintaan dimulai.-------------
Jumlah hasil permintaan yang dikembalikan :1
waktu mulai adalah :1644574354
waktu akhir adalah :1644574654
waktu log : 1644574354
Jsonstring : {"pv":"162","logtime":1644574354}
-------------Permintaan selesai.-------------

Proses selesai dengan kode keluar 0

Contoh 4: Menganalisis log menggunakan klausa GROUP BY

Contoh ini menunjukkan cara meminta log di mana metode permintaan adalah POST dan mengelompokkan hasil berdasarkan host. Sebuah file GetLogsTest.java dibuat untuk permintaan tersebut.

import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.LogItem;
import com.aliyun.openservices.log.common.QueriedLog;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.request.GetLogsRequest;
import com.aliyun.openservices.log.response.GetLogsResponse;

public class GetLogsTest {

    public static void main(String[] args) throws LogException {
        // Dalam contoh ini, AccessKey ID dan Rahasia AccessKey diperoleh dari variabel lingkungan.
        String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        // Masukkan nama proyek.
        String project = "your-project-name";
        // Atur titik akhir Simple Log Service. Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Ganti nilainya dengan titik akhir yang sebenarnya.
        String host = "cn-hangzhou.log.aliyuncs.com";
        // Masukkan nama penyimpanan log.
        String logStore = "your-logstore-name";

        // Buat klien Simple Log Service.
        Client client = new Client(host, accessId, accessKey);

        // Jalankan permintaan dalam penyimpanan log yang ditentukan.
        try {
            // Permintaan log di mana metode permintaan adalah POST dan kelompokkan hasil berdasarkan host.
            // Gunakan klausa LIMIT dalam sintaks SQL untuk membatasi jumlah baris yang dikembalikan menjadi 5.
            String query = "request_method:POST|select host, COUNT(*) as pv group by host limit 5";
            // Tetapkan rentang waktu untuk permintaan.
            int from = 1754449503;
            int to = 1754449510;

            // Dalam contoh ini, parameter permintaan diatur ke pernyataan kueri dan analisis. Parameter baris tidak valid. Jumlah baris yang dikembalikan ditentukan oleh klausa LIMIT dalam kueri.
            GetLogsRequest request = new GetLogsRequest(project, logStore, from, to, "", query);
            GetLogsResponse logsResponse = client.GetLogs(request);
            System.out.println("-------------Permintaan dimulai.-------------");
            System.out.println("Jumlah hasil permintaan yang dikembalikan :" + logsResponse.GetCount());
            System.out.println("waktu mulai adalah :" + from);
            System.out.println("waktu akhir adalah :" + to);
            for (QueriedLog log : logsResponse.getLogs()) {
                LogItem item = log.GetLogItem();
                System.out.println("waktu log : " + item.mLogTime);
                System.out.println("Jsonstring : " + item.ToJsonString());
            }
            System.out.println("-------------Permintaan selesai.-------------");

        } catch (LogException e) {
            System.out.println("LogException e :" + e.toString());
            System.out.println("kode kesalahan :" + e.GetErrorCode());
            System.out.println("pesan kesalahan :" + e.GetErrorMessage());
            throw e;
        }
    }
}

Tanggapan:

-------------Permintaan dimulai.-------------
Jumlah hasil permintaan yang dikembalikan :5
waktu mulai adalah :1644574445
waktu akhir adalah :1644574745
waktu log : 1644574445
Jsonstring : {"pv":"1","host":"www.example1.com","logtime":1644574445}
waktu log : 1644574445
Jsonstring : {"pv":"1","host":"www.example.org","logtime":1644574445}
waktu log : 1644574445
Jsonstring : {"pv":"1","host":"www.example.net","logtime":1644574445}
waktu log : 1644574445
Jsonstring : {"pv":"1","host":"www.example.edu","logtime":1644574445}
waktu log : 1644574445
Jsonstring : {"pv":"1","host":"www.aliyundoc.com","logtime":1644574445}
-------------Permintaan selesai.-------------

Proses selesai dengan kode keluar 0

Contoh 5: Menganalisis log menggunakan klausa GROUP BY (200 log dikembalikan)

Dalam contoh ini, sebuah file bernama GetLogsTest.java dibuat. File ini digunakan untuk meminta log yang metode permintaannya adalah POST, mengelompokkan log yang diperoleh berdasarkan host, dan mengembalikan maksimal 200 log.

import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.LogItem;
import com.aliyun.openservices.log.common.QueriedLog;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.request.GetLogsRequest;
import com.aliyun.openservices.log.response.GetLogsResponse;

public class GetLogsTest {

    public static void main(String[] args) throws LogException {
        // Dalam contoh ini, AccessKey ID dan Rahasia AccessKey diperoleh dari variabel lingkungan.
        String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        // Masukkan nama proyek.
        String project = "your-project-name";
        // Atur titik akhir Simple Log Service. Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Ganti nilainya dengan titik akhir yang sebenarnya.
        String host = "cn-hangzhou.log.aliyuncs.com";
        // Masukkan nama penyimpanan log.
        String logStore = "your-logstore-name";

        // Buat klien Simple Log Service.
        Client client = new Client(host, accessId, accessKey);

        // Jalankan permintaan dalam penyimpanan log yang ditentukan.
        try {
            // Permintaan log di mana metode permintaan adalah POST dan kelompokkan hasil berdasarkan host.
            // Gunakan klausa LIMIT dalam sintaks SQL untuk menentukan jumlah baris yang akan dikembalikan.
            String query = "request_method:POST|select host, COUNT(*) as pv group by host limit 0,200";
            // Tetapkan rentang waktu untuk permintaan.
            int from = 1754449503;
            int to = 1754449510;

            // Dalam contoh ini, parameter permintaan diatur ke pernyataan kueri dan analisis. Parameter baris tidak valid.
            GetLogsRequest request = new GetLogsRequest(project, logStore, from, to, "", query);
            GetLogsResponse logsResponse = client.GetLogs(request);
            System.out.println("-------------Permintaan dimulai.-------------");
            System.out.println("Jumlah hasil permintaan yang dikembalikan :" + logsResponse.GetCount());
            System.out.println("waktu mulai adalah :" + from);
            System.out.println("waktu akhir adalah :" + to);
            for (QueriedLog log : logsResponse.getLogs()) {
                LogItem item = log.GetLogItem();
                System.out.println("waktu log : " + item.mLogTime);
                System.out.println("Jsonstring : " + item.ToJsonString());
            }
            System.out.println("-------------Permintaan selesai.-------------");

        } catch (LogException e) {
            System.out.println("LogException e :" + e.toString());
            System.out.println("kode kesalahan :" + e.GetErrorCode());
            System.out.println("pesan kesalahan :" + e.GetErrorMessage());
            throw e;
        }
    }
}

Tanggapan:

-------------Permintaan dimulai.-------------
Jumlah hasil permintaan yang dikembalikan :200
waktu mulai adalah :1644574445
waktu akhir adalah :1644574745
waktu log : 1644574445
Jsonstring : {"pv":"1","host":"www.example1.com","logtime":1644574445}
waktu log : 1644574445
Jsonstring : {"pv":"1","host":"www.example.org","logtime":1644574445}
waktu log : 1644574445
Jsonstring : {"pv":"1","host":"www.example.net","logtime":1644574445}
waktu log : 1644574445
Jsonstring : {"pv":"1","host":"www.example.edu","logtime":1644574445}
waktu log : 1644574445
Jsonstring : {"pv":"1","host":"www.aliyundoc.com","logtime":1644574445}
......
-------------Permintaan selesai.-------------

Proses selesai dengan kode keluar 0

Contoh 6: Meminta jumlah total log dalam satu jam terakhir menggunakan pernyataan SQL

Contoh ini menunjukkan cara menggunakan pernyataan SQL *|select count(*) as count untuk meminta jumlah total log dari satu jam terakhir. Sebuah file GetLogsTest.java dibuat untuk permintaan tersebut.

import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.LogItem;
import com.aliyun.openservices.log.common.QueriedLog;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.request.GetLogsRequest;
import com.aliyun.openservices.log.response.GetLogsResponse;

import java.util.Date;

public class GetLogsTest {

    public static void main(String[] args) throws LogException {
        // Dalam contoh ini, AccessKey ID dan Rahasia AccessKey diperoleh dari variabel lingkungan.
        String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        // Masukkan nama proyek.
        String project = "your-project-name";
        // Atur titik akhir Simple Log Service. Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Ganti nilainya dengan titik akhir yang sebenarnya.
        String host = "cn-hangzhou.log.aliyuncs.com";
        // Masukkan nama penyimpanan log.
        String logStore = "your-logstore-name";

        // Buat klien Simple Log Service.
        Client client = new Client(host, accessId, accessKey);

        // Jalankan permintaan dalam penyimpanan log yang ditentukan.
        try {
            // Permintaan jumlah total log.
            String query = "*|select count(*) as count";
            // Tetapkan rentang waktu permintaan menjadi 1 jam (3600 detik).
            int from = (int) (new Date().getTime() / 1000 - 3600);
            int to = (int) (new Date().getTime() / 1000);
            int offset = 0;
            int line = 200;
            // Dalam contoh ini, pernyataan SQL dalam parameter permintaan digunakan untuk meminta jumlah total log dalam rentang waktu yang ditentukan.
            GetLogsRequest request = new GetLogsRequest(project, logStore, from, to, "", query,line,offset,true);
            GetLogsResponse logsResponse = client.GetLogs(request);
            System.out.println("-------------Permintaan dimulai.-------------");
            System.out.println("Jumlah hasil permintaan yang dikembalikan :" + logsResponse.GetCount());
            System.out.println("waktu mulai adalah :" + from);
            System.out.println("waktu akhir adalah :" + to);
            for (QueriedLog log : logsResponse.getLogs()) {
                LogItem item = log.GetLogItem();
                System.out.println("waktu log : " + item.mLogTime);
                System.out.println("Jsonstring : " + item.ToJsonString());
            }
            System.out.println("-------------Permintaan selesai.-------------");

        } catch (LogException e) {
            System.out.println("LogException e :" + e.toString());
            System.out.println("kode kesalahan :" + e.GetErrorCode());
            System.out.println("pesan kesalahan :" + e.GetErrorMessage());
            throw e;
        }
    }
}

Hasil yang dikembalikan menunjukkan bahwa jumlah total log dalam satu jam terakhir adalah 19.051. Tanggapan:

waktu mulai adalah :1675041679
waktu akhir adalah :1675045279
Jumlah hasil sql yang dikembalikan :1
Jsonstring : {"count":"19051","logtime":1675041679}
-------------Permintaan selesai.-------------

Referensi