全部产品
Search
文档中心

Simple Log Service:Hasil kueri dan analisis halaman

更新时间:Jul 06, 2025

Jika pernyataan kueri mengembalikan sejumlah besar hasil kueri dan analisis, hasil tersebut akan ditampilkan dengan kecepatan lebih rendah. Simple Log Service menyediakan fitur kueri berhalaman untuk membatasi jumlah log yang dapat dikembalikan untuk setiap kueri. Topik ini menjelaskan metode halaman untuk hasil kueri dan analisis.

Ikhtisar metode halaman

Saat Anda memanggil operasi GetLogs untuk menanyakan log, Simple Log Service memungkinkan Anda untuk membagi halaman hasil kueri dan analisis. Pernyataan kueri dapat mencakup pernyataan pencarian dan pernyataan analitik. Metode halaman bervariasi antara pernyataan pencarian dan pernyataan analitik. Anda dapat menanyakan jumlah total log sebelum memanggil operasi GetLogs. Untuk informasi lebih lanjut, lihat GetHistograms.

  • Pernyataan pencarian: Menanyakan data mentah log menggunakan kata kunci. Anda dapat mengonfigurasi parameter offset dan line dalam operasi GetLogs untuk melakukan kueri berhalaman. Untuk informasi lebih lanjut, lihat Ikhtisar Pencarian Log.

  • Pernyataan analitik: Menganalisis hasil kueri menggunakan sintaks SQL. Anda dapat menggunakan klausa LIMIT untuk melakukan kueri berhalaman. Untuk informasi lebih lanjut, lihat Ikhtisar Kueri dan Analisis Log dan Klausa LIMIT.

Contoh halaman berdasarkan metode halaman

Kode berikut memberikan contoh cara membagi halaman hasil kueri dan analisis berdasarkan metode halaman. Anda dapat memilih metode halaman sesuai dengan kebutuhan bisnis Anda.

  • Contoh pembagian halaman hasil kueri

    Saat melakukan kueri berhalaman, nilai parameter offset meningkat hingga semua log dibaca. Saat nilainya mencapai angka tertentu, 0 dikembalikan, dan proses selesai. Dalam hal ini, semua data yang diperlukan telah dibaca.

    • Kode sampel untuk implementasi halaman

      offset = 0                           # Baris dari mana sistem mulai membaca log. Nilai 0 menunjukkan bahwa sistem membaca log dari baris 0.
      line = 100                          # Jumlah baris yang dikembalikan untuk permintaan API saat ini. Hingga 100 baris dapat dikembalikan. Jika Anda menetapkan parameter ini ke nilai lebih dari 100, hanya 100 baris yang dikembalikan. Baca 100 baris sekaligus.
      query = "status:200"                 # Kueri semua log di mana nilai bidang status adalah 200.
      while True:
           response = get_logstore_logs(query, offset, line) # Panggil operasi untuk membaca log.
           process (response)                                 # Panggil logika kustom untuk memproses hasil yang dikembalikan.
           if response.get_count() == 0 && response.is_complete()
               Proses pembacaan selesai, dan loop saat ini berakhir.
           else
              offset += 100                          # Nilai parameter offset bertambah menjadi 100. 100 baris berikutnya dibaca.

      Contoh kode Python

      Untuk informasi lebih lanjut, lihat Ikhtisar SDK Simple Log Service untuk Python.

      # Titik akhir Simple Log Service.
      endpoint = ''
      # Dalam contoh ini, ID AccessKey dan Rahasia AccessKey diperoleh dari variabel lingkungan.
      accessKeyId = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID', '')
      accessKey = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET', '')
      # Nama proyek.
      project = ''     
      # Nama penyimpanan log.
      logstore = ''  
      client = LogClient(endpoint, accessKeyId, accessKey)
      topic = ""
      From = int(time.time()) - 600
      To = int(time.time())
      log_line = 100
      offset = 0
      while True:
          res4 = None
          for retry_time in range(0, 3): 
              req4 = GetLogsRequest(project, logstore, From, To, topic=topic, line=log_line, offset=offset)
              res4 = client.get_logs(req4)
              if res4 is not None and res4.is_completed():
                  break
              time.sleep(1)
           offset += 100 
           if res4.is_completed() and res4.get_count() == 0:
               break;
           if res4 is not None:
               # Hasil eksekusi.
              res4.log_print() 

      Contoh kode Java

      Untuk informasi lebih lanjut, lihat Ikhtisar SDK Simple Log Service untuk Java.

      int log_offset = 0;
      int log_line = 100;   // Jumlah baris yang dibaca sekaligus. Hingga 100 baris dapat dikembalikan. Jika Anda ingin membaca lebih dari 100 baris, gunakan parameter offset. Parameter offset dan line hanya berlaku untuk pernyataan pencarian yang menggunakan kata kunci. Jika Anda menggunakan pernyataan analitik, parameter offset dan line tidak valid. Jika Anda ingin pernyataan analitik mengembalikan lebih dari 100 baris, gunakan klausa LIMIT.
      while (true) {
          GetLogsResponse res4 = null;
          // Untuk setiap offset, 100 baris dibaca sekaligus. Jika operasi pembacaan gagal, hingga tiga kali percobaan ulang diperbolehkan.
          for (int retry_time = 0; retry_time < 3; retry_time++) {
                GetLogsRequest req4 = new GetLogsRequest(project, logstore, from, to, topic, query, log_offset,
                     log_line, false);
                res4 = client.GetLogs(req4);
                if (res4 != null && res4.IsCompleted()) {
                          break;
                      }
                      Thread.sleep(200);
                  }
                  System.out.println("Jumlah log yang dibaca:" + String.valueOf(res4.GetCount()));
                  log_offset += log_line;
                  if (res4.IsCompleted() && res4.GetCount() == 0) {
                              break;
                  }
       }                    
  • Contoh pembagian halaman hasil analisis

    Anda dapat menggunakan klausa LIMIT untuk membagi halaman hasil analisis. Misalnya, jika Anda ingin menggunakan pernyataan * | select count(1) , url group by url untuk mengembalikan 1.000 baris, Anda dapat mengeksekusi pernyataan berikut untuk melakukan dua kueri berhalaman dan menanyakan 500 baris setiap kali:

    * | select count(1) , url  group by url  limit 0, 500
    * | select count(1) , url  group by url  limit 500, 500
    • Kode sampel untuk implementasi halaman

      offset = 0     // Baris dari mana sistem mulai membaca log. Nilai 0 menunjukkan bahwa sistem membaca log dari baris 0.
      line = 500    // Jumlah baris yang dikembalikan untuk permintaan API saat ini. Hingga 1.000.000 baris dapat dikembalikan. Jika sejumlah besar baris dibaca sekaligus, latensi jaringan meningkat, dan kecepatan pemrosesan sisi klien menurun. Baca 500 baris sekaligus.
      query = "* | select count(1) , url  group by url  limit "
      while True:
      real_query = query + offset + "," +  line
      response = get_logstore_logs(real_query) // Panggil operasi untuk membaca log.
      process (response)                       // Panggil logika kustom untuk memproses hasil yang dikembalikan.
      if response.get_count() == 0   
          Proses pembacaan selesai, dan loop saat ini berakhir.
      else
          offset += 500                        // Nilai parameter offset bertambah menjadi 500. 500 baris berikutnya dibaca.

      Contoh kode Python

      Untuk informasi lebih lanjut, lihat Ikhtisar SDK Simple Log Service untuk Python.

      # Titik akhir Simple Log Service.
      endpoint = '' 
      # Dalam contoh ini, ID AccessKey dan Rahasia AccessKey diperoleh dari variabel lingkungan.
      accessKeyId = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID', '')
      accessKey = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET', '')
      # Nama proyek.
      project = ''     
      # Nama penyimpanan log.
      logstore = ''  
      client = LogClient(endpoint, accessKeyId, accessKey)
      topic = ""
      origin_query = "* | select *  limit "
      From = int(time.time()) - 600
      To = int(time.time())
      log_line = 100
      offset = 0
      while True:
          res4 = None
          query = origin_query + str(offset) + " , " + str(log_line)
          for retry_time in range(0, 3): 
              req4 = GetLogsRequest(project, logstore, From, To, topic=topic, query=query)
              res4 = client.get_logs(req4)
              if res4 is not None and res4.is_completed():
                  break
              time.sleep(1)
          offset += 100 
          if res4.is_completed() and res4.get_count() == 0:
              break;
          if res4 is not None:
          # Hasil eksekusi.
              res4.log_print()   

      Contoh kode Java

      Untuk informasi lebih lanjut, lihat Ikhtisar SDK Simple Log Service untuk Java.

      int log_offset = 0;
      int log_line = 500;
      String origin_query = "* | select count(1) , url  group by url  limit "
      while (true) {
                  GetLogsResponse res4 = null;
                  // Untuk setiap offset, 500 baris dibaca sekaligus. Jika operasi pembacaan gagal, hingga tiga kali percobaan ulang diperbolehkan.
                  query = origin_query + log_offset + "," + log_line;
                  for (int retry_time = 0; retry_time < 3; retry_time++) {
                      GetLogsRequest req4 = new GetLogsRequest(project, logstore, from, to, topic, query);
                      res4 = client.GetLogs(req4);
      
                      if (res4 != null && res4.IsCompleted()) {
                          break;
                      }
                      Thread.sleep(200);
                  }
                  System.out.println("Jumlah log yang dibaca:" + String.valueOf(res4.GetCount()));
                  log_offset += log_line;
                  if (res4.GetCount() == 0) {
                              break;
                  }
      }