All Products
Search
Document Center

Simple Log Service:Sintaks dasar

Last Updated:Sep 12, 2026

Topik ini menjelaskan sintaks dasar Domain-Specific Language (DSL) Simple Log Service (SLS).

Komentar

Untuk menambahkan komentar yang menjelaskan sintaks, awali baris tersebut dengan tanda pagar (#). Berikut contohnya:

# Tetapkan topik default untuk log. Ini adalah komentar di awal baris.
e_set("__topic__", "access_log")   # Tetapkan topik default untuk log. Ini adalah komentar di akhir baris.

Pemenggalan baris

Jika daftar parameter untuk pemanggilan fungsi terlalu panjang, Anda dapat memisahkannya ke beberapa baris.

  • Jika struktur fungsi berisi koma (,), Anda dapat langsung menambahkan pemenggalan baris setelah koma tersebut.

  • Jika string terlalu panjang dan memerlukan pemenggalan baris, gunakan garis miring terbalik (\).

Contoh:

e_set("__topic__", "v1",
        "type", "v2",       # Ketika parameter dipisahkan oleh koma (,), Anda dapat langsung menambahkan pemenggalan baris.
        "length", 100)
e_set("__topic__", "this is a very long long long .........." \
                            "......long text")  # Gunakan garis miring terbalik (\) untuk menambahkan pemenggalan baris.

Metode pemanggilan fungsi

  • Pemanggilan dasar

    e_set("abc", "xyz")
    Catatan

    Saat menulis pernyataan transformasi data, tipe data dan jumlah parameter input harus sesuai dengan sintaks fungsi.

  • Pemanggilan parameter variabel dasar

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

    Jika parameter suatu fungsi mencakup tanda kurung siku ([]), parameter di dalam kurung siku tersebut, seperti new dan count, bersifat opsional. Parameter tersebut tidak dapat dipanggil sebagai parameter bernama dan harus dipanggil sesuai urutan yang ditentukan.

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

    Parameter yang memiliki nilai default merupakan parameter bernama. Misalnya, mode dalam e_set("abc", "xyz", mode="fill") adalah parameter bernama.

    • Untuk beberapa fungsi, Anda harus memberikan nilai untuk parameter bernama dalam kondisi tertentu. Untuk informasi lebih lanjut, lihat deskripsi parameter masing-masing fungsi.

    • Untuk memberikan nilai ke parameter bernama, gunakan format: mode=....

    • Jika terdapat beberapa parameter bernama, urutan penentuannya tidak menjadi masalah. Misalnya, e_csv("data", ["f1", "f2", "f3"], sep='#', quote="|") sama dengan e_csv("data", ["f1", "f2", "f3"], quote="|", sep='#').

    Catatan

    Dalam pemanggilan fungsi, parameter bernama harus selalu ditentukan setelah parameter non-bernama.

  • Pemanggilan fungsi bersarang

    Anda dapat menggunakan nilai kembali dari satu fungsi sebagai parameter dalam fungsi lainnya. Pastikan tipe datanya konsisten. Contohnya:

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

    Beberapa fungsi mendukung parameter variabel. v("f1", ....) menunjukkan bahwa Anda dapat memberikan lebih banyak parameter, seperti v("f1", "f2", "f3").

    Saat memberikan parameter bernama, parameter tersebut harus ditempatkan di akhir. Misalnya, v("f1", "f2", "f3", "f4", mode="fill").

Operator

  • Operator perbandingan

    Mode standar SLS DSL mendukung operator perbandingan, termasuk >, <, >=, <=, !=, dan ==. Anda juga dapat menggunakan fungsi perbandingan yang disediakan oleh SLS untuk mencapai efek yang sama.

    • Gunakan operator perbandingan secara langsung

      # Contoh berikut menunjukkan cara menggunakan operator perbandingan. Jika hasil perbandingan bernilai True, log akan di-drop.
      e_if(3 > 2, DROP)       # Jika 3 lebih besar dari 2, log akan di-drop.
      e_if(3 < 2, DROP)       # Jika 3 lebih kecil dari 2, log akan di-drop.
      e_if(3 >= 2, DROP)      # Jika 3 lebih besar dari atau sama dengan 2, log akan di-drop.
      e_if(3 <= 2, DROP)      # Jika 3 lebih kecil dari atau sama dengan 2, log akan di-drop.
      e_if(3 == 2, DROP)      # Jika 3 sama dengan 2, log akan di-drop.
      e_if(3 != 2, DROP)      # Jika 3 tidak sama dengan 2, log akan di-drop.
      e_if(1 < 2 < 3, DROP)   # Jika 2 lebih besar dari 1 dan lebih kecil dari 3, log akan di-drop.
      e_if(0 < ct_int(v('x')) < 100, DROP) # Jika nilai bidang x lebih besar dari 0 dan lebih kecil dari 100, log akan di-drop.
    • Gunakan fungsi perbandingan yang disediakan oleh SLS

      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)

      Lebih kecil dari <

      op_lt

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

      Lebih kecil dari atau sama dengan <=

      op_le

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

  • Operator logika

    Mode standar SLS DSL mendukung operator logika, termasuk and, or, dan not. Anda juga dapat menggunakan fungsi logika yang disediakan oleh SLS untuk mencapai efek yang sama.

    • Gunakan operator logika secara langsung

      # Contoh berikut menunjukkan cara menggunakan operator logika. Jika hasil operasi logika bernilai True, log akan di-drop.
      e_if(True and False, DROP)     # Hasilnya False.
      e_if(True or False, DROP)      # Hasilnya True.
      e_if(True and not False, DROP) # Hasilnya True.
      e_if(3 > 2 and 1 < 3, DROP)    # Hasilnya True.
      e_if(ct_int(v('x')) > 100 or ct_int(v('y')) < 100, DROP) # Nilai bidang x lebih besar dari 100 atau nilai bidang y lebih kecil dari 100.
    • Gunakan fungsi logika yang disediakan oleh SLS

      Operasi

      Fungsi

      Contoh

      Logical AND and

      op_and

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

      Logical OR or

      op_or

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

      Logical NOT not

      op_not

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

  • Operator lainnya

    Operator berikut tidak didukung secara langsung dalam mode standar SLS DSL. SLS menyediakan fungsi yang sesuai untuk mencapai efek yang sama.

    Operasi berbasis skenario

    Fungsi

    Contoh

    Tambah +

    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 floor //

    op_div_floor

    op_div_floor(v("bytes"), 1024)

    Operasi modulo %

    op_mod

    op_mod(v("age"), 10)

    Negasi -

    op_neg

    op_neg(v("profit"))

    Periksa keberadaan in

    op_in

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

    Periksa ketidakhadiran not in

    op_not_in

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

    Pemotongan string [ ...]

    op_slice

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

    Misalnya, untuk mengatur nilai bidang a menjadi 3600*6:

    # * 
    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 true dan false

Beberapa fungsi menerima suatu kondisi dan menentukan logika selanjutnya berdasarkan nilai kondisi tersebut. Kondisi tersebut dapat berupa bidang statis atau nilai kembali dari suatu ekspresi.

SLS DSL mendukung evaluasi semua tipe data. Tabel berikut menjelaskan kondisi nilai true dan false untuk berbagai tipe data.

Tipe data

Kondisi untuk Benar

Kondisi untuk False

Boolean

True, true

False, false

None

None

Selalu False

Numerik

Bukan 0 atau 0.0

0 atau 0.0

String

Tidak kosong

String kosong

Bytes

Tidak kosong

Bytes kosong

Tupel

Tidak kosong

Tupel kosong

Daftar

Tidak kosong

Daftar kosong

Dictionary

Tidak kosong

Dictionary kosong

Tabel

True jika ada

Objek null (None)

Datetime

True jika ada

Objek null (None)

Berikut adalah contoh event yang di-drop:

e_if(True, DROP)                     # Jika input bernilai True, event akan di-drop.
e_if(1, DROP)                        # Jika input bernilai 1, event akan di-drop.
e_if(v("abc"), DROP)                 # Jika bidang abc ada dan tidak kosong, event akan di-drop.
e_if(str_isdigit(v("abc")), DROP)    # Jika bidang abc ada dan isinya hanya terdiri dari digit, event akan di-drop.