全部产品
Search
文档中心

Simple Log Service:Sintaksis Dasar

更新时间:Jun 26, 2025

Topik ini menjelaskan sintaksis dasar dari bahasa domain-spesifik (DSL) untuk Simple Log Service.

Komentar

Mulailah komentar pada langkah dengan tanda pagar (#). Contoh:

# Tentukan topik default. Ini adalah komentar di awal langkah.
e_set("__topic__", "access_log")   # Tentukan topik default. Ini adalah komentar di akhir langkah. 

Pemisahan baris

Jika daftar parameter atau string suatu fungsi tidak muat dalam satu baris, Anda dapat memisahkan daftar parameter atau string tersebut.

  • Jika daftar parameter berisi koma (,), Anda dapat membagi daftar parameter tepat setelah koma (,).

  • Untuk memisahkan string, gunakan garis miring terbalik (\) untuk menunjukkan bahwa string berlanjut ke baris berikutnya.

Contoh:

e_set("__topic__", "v1",
        "type", "v2",       # Gunakan koma (,) sebagai pemisah baris.
        "length", 100)
e_set("__topic__", "this is a very long long long .........." \
                            "......long text") # Gunakan garis miring terbalik (\) sebagai pemisah baris. 

Pemanggilan Fungsi

  • Memanggil fungsi dasar

    e_set("abc", "xyz")
    Catatan

    Saat menulis pernyataan transformasi data, tipe data dan jumlah parameter yang dilewatkan ke suatu fungsi harus sesuai dengan sintaksis fungsi tersebut.

  • Melewatkan parameter variabel dasar

    str_replace(value, old [,new [,count] ]) 
    Catatan

    Parameter yang diapit dalam tanda kurung siku [] bersifat opsional. Sebagai contoh, parameter new dan count dalam fungsi sebelumnya bersifat opsional. Parameter ini tidak dapat dilewatkan seperti parameter bernama, melainkan harus dilewatkan secara berurutan.

    # Contoh tidak valid
    str_replace("a-b-c", "-", new='%')
    str_replace("a-b-c", "-", new='%', count=1)
    # Contoh valid
    str_replace("a-b-c", "-", '%')
    str_replace("a-b-c", "-", '%', 2)
  • Melewatkan parameter bernama

    Parameter yang memiliki nilai default disebut parameter bernama. Sebagai contoh, parameter mode dalam fungsi e_set("abc", "xyz", mode="fill") adalah parameter bernama.

    • Anda harus melewatkan nilai parameter bernama dalam fungsi tertentu berdasarkan kondisi tertentu. Untuk informasi lebih lanjut, lihat deskripsi parameter setiap fungsi.

    • Anda dapat melewatkan nilai parameter bernama saat mengonfigurasi parameter dalam format mode=....

    • Anda dapat melewatkan beberapa parameter bernama dalam urutan acak. Sebagai contoh, e_csv("data", ["f1", "f2", "f3"], sep='#', quote="|") setara dengan e_csv("data", ["f1", "f2", "f3"], quote="|", sep='#').

    Catatan

    Parameter bernama harus mengikuti parameter non-bernama.

  • Memanggil kombinasi fungsi

    Anda dapat melewatkan hasil dari suatu fungsi sebagai nilai parameter ke fungsi lain. Pastikan bahwa hasil tersebut memiliki tipe data yang sama dengan nilai parameter. Contoh:

    e_set("abc", v("xyz"))
    e_set("abc", str_lower(v("xyz")))
  • Parameter variabel

    Anda dapat melewatkan parameter variabel ke fungsi tertentu. Fungsi v("f1", ....) menentukan bahwa beberapa parameter dapat dilewatkan. Contoh: v("f1", "f2", "f3").

    Jika Anda perlu melewatkan parameter variabel dan parameter bernama, letakkan parameter bernama setelah parameter variabel. Contoh: v("f1", "f2", "f3", "f4", mode="fill").

Operator

  • Operator Perbandingan

    Operator perbandingan berikut didukung dalam DSL untuk Simple Log Service: >, <, >=, <=, !=, ==. Anda juga dapat menggunakan fungsi perbandingan yang disediakan oleh Simple Log Service untuk melakukan operasi tersebut.

    • Menggunakan operator perbandingan

      # Contoh berikut menunjukkan cara menggunakan operator perbandingan. Jika kondisi perbandingan dievaluasi menjadi True, log terkait akan dibuang.
      e_if(3 > 2, DROP)       # Jika 3 lebih besar dari 2, log dibuang.
      e_if(3 < 2, DROP)       # Jika 3 kurang dari 2, log dibuang.
      e_if(3 >= 2, DROP)      # Jika 3 lebih besar dari atau sama dengan 2, log dibuang.
      e_if(3 <= 2, DROP)      # Jika 3 kurang dari atau sama dengan 2, log dibuang.
      e_if(3 == 2, DROP)      # Jika 3 sama dengan 2, log dibuang.
      e_if(3 != 2, DROP)      # Jika 3 tidak sama dengan 2, log dibuang.
      e_if(1 < 2 < 3, DROP)   # Jika 2 lebih besar dari 1 dan 2 kurang dari 3, log dibuang.
      e_if(0 < ct_int(v('x')) < 100, DROP) # Jika nilai bidang x lebih besar dari 0 dan kurang dari 100, log dibuang. 
    • Menggunakan fungsi perbandingan yang disediakan oleh Simple Log Service

      Operasi

      Fungsi

      Contoh

      Sama dengan (==)

      op_eq

      op_eq(v("name"), "xiao ming")

      Tidak sama dengan (!

      op_ne

      op_ne(v("name"), "xiao ming")

      Lebih besar dari (>)

      op_gt

      op_gt(ct_int(v("age")), )

      Lebih besar dari atau sama dengan (>=)

      op_ge

      op_ge(ct_int(v("age")), 18)

      Kurang dari (<)

      op_lt

      op_lt(ct_int(v("age")), 18)

      Kurang dari atau sama dengan (<=)

      op_le

      op_le(ct_int(v("age")), 18)

  • Operator Logika

    Operator logika berikut didukung dalam DSL untuk Simple Log Service dalam mode standar: AND, OR, dan NOT. Anda juga dapat menggunakan fungsi logika yang disediakan oleh Simple Log Service untuk melakukan operasi tersebut.

    • Menggunakan operator logika

      # Contoh berikut menunjukkan cara menggunakan operator logika. Jika kondisi logika dievaluasi menjadi True, log terkait akan dibuang.
      e_if(True and False, DROP)     # Mengembalikan False.
      e_if(True or False, DROP)      # Mengembalikan True.
      e_if(True and not False, DROP) # Mengembalikan True.
      e_if(3 > 2 and 1 < 3, DROP)    # Mengembalikan True.
      e_if(ct_int(v('x')) > 100 or ct_int(v('y')) < 100, DROP) # Jika nilai bidang x lebih besar dari 100 atau nilai bidang y kurang dari 100, mengembalikan True.
    • Menggunakan fungsi logika yang disediakan oleh Simple Log Service

      Operasi

      Fungsi

      Contoh

      Operator logika AND (and)

      op_and

      op_and(op_gt(v("age"), 18), op_lt(v("age"), 31))

      Operator logika OR (or)

      op_or

      op_or(op_le(v("age"), 18), op_gt(v("age"), 65))

      Operator logika NOT (not)

      op_not

      op_not(op_gt(v("age"), 18))

  • Operator Lainnya

    Beberapa operator DSL tidak dapat digunakan langsung dalam mode standar. Simple Log Service menyediakan fungsi yang dapat digunakan untuk melakukan operasi tersebut. Tabel berikut menjelaskan operator dan fungsi tersebut.

    Operasi

    Fungsi

    Contoh

    Penambahan (+)

    op_add

    op_add(v("age"), 2)

    Pengurangan (-)

    op_sub

    op_sub(v("age"), 2)

    Perkalian (*)

    op_mul

    op_mul(v("size"), 2)

    Eksponensiasi (**)

    op_pow

    op_pow(v("size"), 2)

    Pembagian lantai (//)

    op_div_floor

    op_div_floor(v("bytes"), 1024)

    Modulus (%)

    op_mod

    op_mod(v("age"), 10)

    Negasi (-)

    op_neg

    op_neg(v("profit"))

    Pemeriksaan keberadaan (in)

    op_in

    op_in(["pass", "ok"], v("result"))

    Pemeriksaan ketiadaan (not in)

    op_not_in

    op_not_in(["pass", "ok"], v("result"))

    Pemotongan string ([ ...])

    op_slice

    op_slice(v("message"), 0, 20)

    Dalam contoh ini, nilai bidang a adalah 3600 * 6. Contoh berikut menunjukkan fungsi tidak valid dan valid untuk menentukan nilai bidang tersebut.

    # *
    e_set("a", 3600 * 6)           # Tidak valid
    e_set("a", op_mul(3600, 6))    # Valid
    
    # /
    e_set("bytes_kb", v("bytes") / 1024)                 # Tidak valid
    e_set("bytes_kb", op_div_floor(v("bytes"), 1024))    # Valid

Evaluasi Benar atau Salah

Beberapa fungsi memeriksa apakah suatu kondisi benar atau salah untuk menentukan logika pemrosesan peristiwa. Kondisi bisa berupa nilai tetap atau nilai yang dikembalikan oleh fungsi ekspresi.

Anda dapat melakukan evaluasi benar atau salah untuk semua jenis data dalam DSL untuk pengaturan Simple Log Service. Tabel berikut menjelaskan aturan untuk evaluasi benar atau salah.

Tipe Data

Benar

Salah

Boolean

True, true

False, false

None

Tidak tersedia

Selalu salah

Numerik

Bukan 0 atau 0.0

0 atau 0.0

String

Tidak kosong

String kosong

Bytes

Tidak kosong

Bytes kosong

Tuple

Tidak kosong

Tuple kosong

List

Tidak kosong

List kosong

Dictionary

Tidak kosong

Dictionary kosong

Tabel

Satu atau lebih tabel ada

Tidak ada tabel

Datetime

Satu atau lebih objek datetime ada

Tidak ada objek datetime

Fungsi berikut dapat digunakan untuk membuang log berdasarkan kondisi:

e_if(True, DROP)                     # Jika nilai parameter pertama adalah True, log dibuang.
e_if(1, DROP)                        # Jika nilai parameter pertama adalah 1, log dibuang.
e_if(v("abc"), DROP)                 # Jika bidang abc ada dan nilai bidang ini tidak kosong, log dibuang.
e_if(str_isdigit(v("abc")), DROP)    # Jika bidang abc ada dan nilai bidang ini hanya berisi digit, log dibuang.