All Products
Search
Document Center

Simple Log Service:Panduan Cepat Mulai Simple Log Service Node.js SDK

Last Updated:Jul 18, 2026

Gunakan Simple Log Service Node.js SDK untuk membuat proyek dan Logstore, menulis log, serta mengkueri log.

Prasyarat

Catatan penggunaan

Contoh ini menggunakan titik akhir publik China (Hangzhou): https://cn-hangzhou.log.aliyuncs.com. Untuk mengakses Simple Log Service dari layanan Alibaba Cloud lainnya dalam wilayah yang sama, gunakan titik akhir internal: https://cn-hangzhou-intranet.log.aliyuncs.com. Untuk informasi selengkapnya mengenai wilayah dan titik akhir yang didukung, lihat Titik Akhir.

Parameter

createProject

Parameter permintaan

Parameter

Tipe

Wajib

Deskripsi

projectName

String

Ya

Nama proyek. Nama harus unik secara global. Anda tidak dapat mengubah nama setelah proyek dibuat.

Nama harus memenuhi persyaratan berikut:

  • Nama hanya boleh berisi huruf kecil, angka, dan tanda hubung (-).

  • Nama harus dimulai dengan huruf kecil dan diakhiri dengan huruf kecil atau angka.

  • Panjang nama harus antara 3 hingga 63 karakter.

description

String

Ya

Deskripsi proyek. Panjang deskripsi maksimal 64 karakter dan tidak boleh mengandung tanda kurung siku (<>), apostrof ('), garis miring terbalik (\), tanda kutip ganda ("), atau dua garis miring terbalik berturut-turut (\\).

resourceGroupId

String

Tidak

ID kelompok sumber daya. Jika parameter ini diabaikan, kelompok sumber daya default akan digunakan. Untuk informasi selengkapnya, lihat Buat kelompok sumber daya.

dataRedundancyType

String

Tidak

Jenis redundansi data. Default: penyimpanan redundan lokal. Beberapa wilayah mendukung penyimpanan redundan lokal dan penyimpanan redundan zona. Jenis redundansi data tidak dapat diubah setelah proyek dibuat. Untuk informasi selengkapnya, lihat Redundansi penyimpanan.

  • LRS: penyimpanan redundan lokal

  • ZRS: penyimpanan redundan zona

Parameter respons

Untuk informasi tentang parameter respons, lihat CreateProject.

createLogStore

Parameter permintaan

Parameter

Type

Wajib

Deskripsi

projectName

String

Ya

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

logstoreName

String

Ya

Nama Logstore. Nama harus unik secara global. Anda tidak dapat mengubah nama setelah proyek dibuat.

Nama harus memenuhi persyaratan berikut:

  • Dapat berisi huruf kecil, angka, tanda hubung (-), dan garis bawah (_).

  • Harus dimulai dengan huruf kecil dan diakhiri dengan huruf kecil atau angka.

  • Panjangnya harus antara 3 hingga 63 karakter.

ttl

int

Tidak

Data Retention Period dalam hari. Nilainya harus bilangan bulat antara 1 hingga 3.650. Nilai 3.650 menunjukkan penyimpanan permanen. Setelah periode retensi yang ditentukan berakhir, log akan dihapus.

Periode retensi data (ttl) merupakan jumlah dari periode-periode berikut:

  • periode penyimpanan hot (hotTtl)

  • periode penyimpanan akses jarang (infrequentAccessTtl)

  • periode penyimpanan arsip

shardCount

int

Tidak

Jumlah shard. Nilai valid: 1 hingga 10. Untuk informasi selengkapnya, lihat Shard.

enableTracking

bool

Tidak

Menentukan apakah akan mengaktifkan WebTracking.

  • True: Mengaktifkan WebTracking. Logstore menerima permintaan tulis anonim dari internet. Karena permintaan ini tidak diautentikasi, data kotor dapat ditulis ke Logstore.

  • False (default): Menonaktifkan WebTracking.

Catatan

WebTracking memungkinkan Anda mengumpulkan informasi akses dari browser, aplikasi iOS, dan aplikasi Android. Untuk informasi selengkapnya, lihat Gunakan Web Tracking untuk mengumpulkan log front-end.

appendMeta

bool

Tidak

Menentukan apakah akan mengaktifkan fitur Log Public IP.

  • True: Mengaktifkan fitur tersebut. Simple Log Service menambahkan informasi berikut ke bidang tag log:

    • __client_ip__: Alamat IP publik klien.

    • __receive_time__: Waktu saat log tiba di server, dalam format stempel waktu UNIX.

  • False (default): Menonaktifkan fitur tersebut.

autoSplit

bool

Tidak

Menentukan apakah akan mengaktifkan Automatic Sharding.

maxSplitShard

int

Tidak

Maximum Shards untuk satu shard. Jika Anda mengaktifkan Automatic Sharding, satu shard dapat secara otomatis dibagi menjadi maksimal 256 shard.

Penting

Parameter ini wajib jika autoSplit diatur ke True.

encryptConf

dict

Tidak

Struktur data untuk konfigurasi enkripsi. Termasuk parameter enable, encrypt_type, dan user_cmk_info. Untuk informasi selengkapnya, lihat EncryptConf dan Enkripsi data.

telemetryType

String

Tidak

Jenis data observabilitas. Nilai valid:

  • None (default): Data log.

  • metric: Data metrik. Jika Anda mengatur nilainya ke metric, hanya parameter berikut yang berlaku:

    • logstoreName

    • ttl

    • shardCount

    • autoSplit

    • maxSplitShard

    • appendMeta

Penting

Anda tidak dapat mengubah parameter ini setelah Logstore dibuat.

hotTtl

int

Tidak

Periode penyimpanan hot data dalam Logstore, dalam satuan hari. Nilai minimum adalah 7, dan nilainya tidak boleh melebihi nilai ttl. Nilai -1 menunjukkan bahwa semua data dalam periode retensi (ttl) disimpan di tier penyimpanan hot.

Setelah periode penyimpanan hot berakhir, data dipindahkan ke penyimpanan akses jarang. Untuk informasi selengkapnya tentang penyimpanan hot, penyimpanan akses jarang, penyimpanan arsip, dan proses konversi data, lihat Kelola penyimpanan tier cerdas.

  • Data harus tetap berada di penyimpanan hot minimal selama 7 hari sebelum dapat dipindahkan ke penyimpanan akses jarang. Data harus tetap berada di penyimpanan akses jarang minimal selama 30 hari sebelum dapat dipindahkan ke penyimpanan arsip.

  • Data harus tetap berada di penyimpanan hot minimal selama 30 hari sebelum dapat dipindahkan ke penyimpanan arsip.

mode

String

Tidak

Simple Log Service menyediakan dua jenis Logstore: Standard dan Query.

  • Standard (default): Mendukung kemampuan analitik data penuh dari Simple Log Service, termasuk pemantauan waktu nyata, analisis interaktif, dan observabilitas end-to-end.

  • Query: Mendukung kueri berkinerja-tinggi dengan biaya pengindeksan sekitar separuh dari tipe Standard. Tipe ini tidak mendukung pernyataan SELECT dan cocok untuk skenario dengan volume data besar, periode retensi panjang, atau tanpa kebutuhan analisis log.

Untuk informasi selengkapnya, lihat Jenis Logstore.

infrequentAccessTtl

int

Tidak

Periode penyimpanan akses jarang data dalam Logstore, dalam satuan hari. Untuk informasi selengkapnya, lihat Kelola penyimpanan tier cerdas.

Parameter respons

Untuk informasi tentang parameter respons, lihat CreateLogStore.

createIndex

Parameter permintaan

Parameter

Tipe

Wajib

Deskripsi

projectName

String

Ya

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

logstoreName

String

Ya

Nama Logstore. Logstore dalam Simple Log Service digunakan untuk mengumpulkan, menyimpan, dan mengkueri log. Lihat Kelola Logstore.

index

index

Ya

Konfigurasi indeks.

Parameter respons

Untuk informasi tentang parameter respons, lihat CreateIndex.

getLogs

Parameter permintaan

Parameter

Tipe

Wajib

Deskripsi

projectName

String

Ya

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

logstoreName

String

Ya

Nama Logstore. Logstore dalam Simple Log Service digunakan untuk mengumpulkan, menyimpan, dan mengkueri log. Lihat Kelola Logstore.

from

int

Ya

Awal rentang waktu untuk dikueri. Nilainya berupa stempel waktu UNIX.

Catatan
  • Waktu saat Logstore 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 merupakan interval tertutup-kiri dan terbuka-kanan. Interval mencakup waktu mulai rentang waktu, tetapi tidak mencakup waktu akhir. Jika keduanya sama, interval tidak valid dan error akan dikembalikan.

  • Untuk memastikan seluruh data dapat dikueri, 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 dikueri. Nilainya berupa stempel waktu UNIX.

Catatan
  • Waktu saat Logstore 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 merupakan interval tertutup-kiri dan terbuka-kanan. Interval mencakup waktu mulai rentang waktu, tetapi tidak mencakup waktu akhir. Jika keduanya sama, interval tidak valid dan error akan dikembalikan.

  • Untuk memastikan seluruh data dapat dikueri, 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 log. Nilai default adalah string kosong. Untuk informasi selengkapnya, lihat Topik log.

query

String

Tidak

Pernyataan pencarian atau analitik. Untuk informasi selengkapnya, lihat Kueri dan analisis log. Untuk menggunakan SQL Khusus, tambahkan set session parallel_sql=true; ke pernyataan analitik. Contoh: * | set session parallel_sql=true; select count(*) as pv. Untuk masalah umum dalam kueri dan analisis, lihat Error umum saat mengkueri dan menganalisis log.

Catatan

Ketika parameter query berisi pernyataan analitik (pernyataan SQL), parameter line dan offset diabaikan. Kami menyarankan Anda mengatur parameter ini ke 0 dan menggunakan klausa LIMIT dalam pernyataan SQL untuk paginasi. Untuk informasi selengkapnya, lihat Paginasi hasil kueri dan analisis.

line

int

Tidak

Parameter ini hanya berlaku ketika parameter query berisi pernyataan pencarian. Parameter ini menentukan jumlah maksimum log yang dikembalikan. Rentang nilai: 0–100. Default: 100.

offset

int

Tidak

Parameter ini hanya berlaku ketika parameter query berisi pernyataan pencarian. Parameter ini menentukan jumlah log yang dilewati sebelum mengembalikan hasil. Default: 0.

reverse

bool

Tidak

Menentukan apakah log dikembalikan dalam urutan menurun berdasarkan stempel waktunya. Presisinya hingga menit.

  • True: Mengembalikan log dalam urutan menurun berdasarkan stempel waktunya.

  • False (default): Mengembalikan log dalam urutan naik berdasarkan stempel waktunya.

Penting
  • Jika parameter query berisi pernyataan pencarian, parameter reverse berlaku dan menentukan urutan pengurutan log yang dikembalikan.

  • Jika parameter query berisi pernyataan analitik, parameter reverse diabaikan. Urutan pengurutan ditentukan oleh klausa ORDER BY dalam pernyataan analitik.

powerSql

bool

Tidak

Menentukan apakah akan menggunakan Dedicated SQL. Untuk informasi selengkapnya, lihat Kueri dan analisis berkinerja-tinggi dan presisi-tinggi (SQL Khusus).

  • True: Gunakan SQL Khusus.

  • False (default): Gunakan SQL standar.

Anda juga dapat mengaktifkan SQL Khusus dalam parameter query.

Parameter respons

Untuk informasi tentang parameter respons, lihat GetLogs.

Contoh

Kumpulkan log dengan kode Node.js

Contoh berikut menggunakan skrip Node.js bernama SLSQuickStart.js untuk membuat proyek, Logstore, dan indeks, lalu menulis dan mengkueri data log.


const Client = require('@alicloud/log')
const sls = new Client({
    // Pada contoh ini, ID AccessKey dan Rahasia AccessKey dibaca dari variabel lingkungan.
    accessKeyId: process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
    accessKeySecret: process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
    // Titik akhir Simple Log Service. Contoh ini menggunakan titik akhir untuk wilayah China (Hangzhou). Ganti dengan titik akhir wilayah Anda. 
    endpoint: 'cn-hangzhou.log.aliyuncs.com'
})
// Wajib. Nama proyek.
const projectName = "aliyun-test-node-project"
// Wajib. Nama Logstore.
const logstoreName = "request_log"


async function test() {
    // Buat proyek.
    await sls.createProject(projectName, {
        description: 'test'
    })
    // Buat Logstore.
    await sls.createLogStore(projectName, logstoreName, {
        // Wajib. Periode retensi data dalam hari. Nilai 3650 berarti data disimpan secara permanen.
        ttl: 3600,
        // Wajib. Jumlah shard.
        shardCount: 2
    })
    // Buat indeks.
    const index = {
        "keys": {
            "request_method": {
                // Menentukan apakah kueri peka huruf besar/kecil. `false` membuat kueri tidak peka huruf besar/kecil.
                "caseSensitive": false,
                // Menentukan apakah akan mengaktifkan analisis statistik untuk bidang ini.
                "doc_value": true,
                "token": ["\n", "\t", ";", ",", "=", ":"],
                "type": "text"
            }, "status": {
                // Menentukan apakah kueri peka huruf besar/kecil. `false` membuat kueri tidak peka huruf besar/kecil.
                "caseSensitive": false,
                // Menentukan apakah akan mengaktifkan analisis statistik untuk bidang ini.
                "doc_value": true,
                "token": ["\n", "\t", ";", ",", "=", ":"],
                "type": "long"
            }
        },
    }
    await sls.createIndex(projectName, logstoreName, index)
    // Tulis log.
    const logGroup = {
        logs: [
          { content: { request_method: 'GET', status: '200' }, timestamp: Math.floor(new Date().getTime() / 1000) },
          { content: { request_method: 'GET', status: '500' }, timestamp: Math.floor(new Date().getTime() / 1000) },
          { content: { request_method: 'GET', status: '200' }, timestamp: Math.floor(new Date().getTime() / 1000) },
          { content: { request_method: 'POST', status: '500'}, timestamp: Math.floor(new Date().getTime() / 1000) }
        ],
        tags: [{ tag1: 'testTag' }],
        topic: 'testTopic',
        source: 'testSource'
      };
      await sls.postLogStoreLogs(projectName, logstoreName, logGroup);
      // Contoh kueri 1: Kueri log dari hari kemarin.
      const from = new Date();
      from.setDate(from.getDate() - 1);
      const to = new Date();
      const res = await sls.getLogs(projectName, logstoreName, from, to);
      
      // Contoh kueri 2: Gunakan pernyataan analitik untuk menghitung jumlah log dalam 10 menit terakhir.
      // const from = new Date();
      // from.setSeconds(from.getSeconds() - 600)
      // const to = new Date();
      // query = '* | select count(*) as count';
      // topic = 'testTopic';
    
      // const res = await sls.getLogs(projectName,logstoreName,from,to,{
      //     query: query,
      //     topic: topic,
      //     line: 100,
      //     offset: 0,
      //     reverse: false,
      //     powersql: false
      // });
      
      console.log(res)
}
// Jalankan fungsi.
test()

Contoh respons:

[
  {
    request_method: 'GET',
    status: '200',
    __topic__: 'testTopic',
    __source__: 'testSource',
    '__tag__:tag1': 'testTag',
    __time__: '1744882259'
  },
  {
    request_method: 'GET',
    status: '500',
    __topic__: 'testTopic',
    __source__: 'testSource',
    '__tag__:tag1': 'testTag',
    __time__: '1744882259'
  },
  {
    request_method: 'GET',
    status: '200',
    __topic__: 'testTopic',
    __source__: 'testSource',
    '__tag__:tag1': 'testTag',
    __time__: '1744882259'
  },
  {
    request_method: 'POST',
    status: '500',
    __topic__: 'testTopic',
    __source__: 'testSource',
    '__tag__:tag1': 'testTag',
    __time__: '1744882259'
  }
]

Tabel berikut mencantumkan lebih banyak contoh kode.

Kode sumber GitHub

Deskripsi

integration.test.js

Buat proyek, Logstore, dan indeks. Tulis dan kueri log serta Logstore. Dapatkan distribusi log.

Kumpulkan log Node.js dengan Logtail

Untuk informasi tentang cara menggunakan Logtail untuk mengumpulkan log log4js dari aplikasi Node.js, lihat Kumpulkan log Node.js.