全部产品
Search
文档中心

Simple Log Service:Memulai SDK Simple Log Service untuk Flutter

更新时间:Dec 10, 2025

Topik ini menjelaskan cara menggunakan SDK Simple Log Service untuk Flutter guna mengumpulkan log.

Prasyarat

SDK Simple Log Service untuk Flutter telah diinstal. Untuk informasi selengkapnya, lihat Instal SDK Simple Log Service untuk Flutter.

Inisialisasi SDK

Pada skenario umum, Anda dapat menginisialisasi SDK dengan kode berikut. Jika ingin menentukan ukuran setiap paket log yang dikirim ke Simple Log Service dan mengaktifkan fitur unggah yang dapat dilanjutkan (resumable upload), konfigurasikan kelas LogProducerConfiguration. Untuk informasi selengkapnya, lihat Konfigurasikan parameter dalam kelas LogProducerConfiguration.

import 'package:aliyun_log_dart_sdk/aliyun_log_dart_sdk.dart';

AliyunLogDartSdk? _aliyunLogSdk;

void _initProducer() async {
  // Tentukan endpoint Simple Log Service, nama project, dan nama Logstore. Anda dapat mengonfigurasi parameter ini secara dinamis.
    LogProducerConfiguration configuration = LogProducerConfiguration(
      endpoint: 'your endpoint', project: 'your project', logstore: 'your logstore'
    );
  // Pasangan AccessKey yang digunakan untuk mengakses Simple Log Service. Untuk informasi selengkapnya, lihat Pasangan AccessKey. Pasangan AccessKey milik Akun Alibaba Cloud memiliki izin atas semua operasi API. Menggunakan kredensial ini untuk melakukan operasi di Simple Log Service merupakan operasi berisiko tinggi. Kami menyarankan agar Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin. Untuk membuat Pengguna RAM, login ke Konsol RAM.
    configuration.accessKeyId = 'your access key id';
    configuration.accessKeySecret = 'your access key secret';
    configuration.securityToken = 'your access key token'; // Tentukan token Security Token Service (STS). Parameter ini hanya diperlukan jika Anda menggunakan STS untuk mendapatkan pasangan AccessKey temporary.
    _aliyunLogSdk = AliyunLogDartSdk();
    LogProducerResult result = await _aliyunLogSdk!.initProducer(configuration);
}

Untuk informasi lebih lanjut tentang cara memperoleh informasi yang diperlukan untuk inisialisasi SDK, lihat topik berikut:

Kirim log

Anda dapat menggunakan metode addLog untuk mengirim log bisnis kustom.

LogProducerResult code = await _aliyunLogSdk!.addLog({
 'str': 'str value',
 'int': 12,
 'double': 12.12,
 'boolean': true,
 'map': {'key': 'value', 'inntt': 3333},
 'array': ['a1', 'a2'],
 'null': null,
 'content': 'Chinese'
});

Jika code == LogProducerResult.ok dikembalikan, berarti log berhasil dikirim. Jika kode kesalahan dikembalikan, lakukan pemecahan masalah sesuai petunjuk pada bagian Kode kesalahan dalam topik ini.

Aturan obfuscation

Jika obfuscation diaktifkan untuk proyek Flutter Anda, tambahkan aturan berikut ke file konfigurasi obfuscation proyek tersebut. Jika tidak, proyek Android mungkin tidak berjalan sebagaimana mestinya. Secara default, obfuscation diaktifkan untuk Flutter versi 1.16.2 dan yang lebih baru. Proyek iOS tidak terpengaruh oleh aturan ini.

-keep class com.aliyun.sls.android.producer.* { *; }
-keep interface com.aliyun.sls.android.producer.* { *; }

Konfigurasi parameter dinamis

SDK Simple Log Service untuk Flutter mendukung konfigurasi dinamis untuk parameter seperti Endpoint, Project, Logstore, dan AccessKey.

  • Kode contoh untuk mengonfigurasi parameter Endpoint, Project, dan Logstore secara dinamis:

    await _aliyunLogSdk!.setEndpoint('new-endpoint');
    await _aliyunLogSdk!.setProject('new-project-name');
    await _aliyunLogSdk!.setLogstore('new-logstore-name');
  • Kode contoh untuk mengonfigurasi parameter AccessKey secara dinamis:

    // Parameter SecurityToken bersifat opsional. Parameter ini hanya diperlukan jika Anda menggunakan STS untuk mendapatkan pasangan AccessKey temporary.
    await _aliyunLogSdk!.setAccessKey('your accesskey id', 'your accesskey secret', securityToken: 'your accesskey token');
  • Kode contoh untuk mengonfigurasi parameter Source, Topic, dan Tag secara dinamis:

    await _aliyunLogSdk!.setSource('flutter');
    await _aliyunLogSdk!.setTopic('flutter-test');
    await _aliyunLogSdk!.addTag('tag1', 'value1');
    await _aliyunLogSdk!.addTag('tag2', 'value2');
  • Kode contoh untuk mengonfigurasi parameter lainnya secara dinamis:

    Penting

    Metode AliyunLogDartSdk.updateConfiguration() tidak mendukung konfigurasi dinamis untuk parameter yang terkait dengan unggah yang dapat dilanjutkan (resumable upload).

    LogProducerConfiguration configuration = LogProducerConfiguration();
    configuration.dropDelayLog = true;
    configuration.dropUnauthorizedLog = true;
    // Anda dapat mengonfigurasi parameter dalam kelas LogProducerConfiguration secara dinamis dengan cara yang sama.
    await _aliyunLogSdk!.updateConfiguration(configuration);

Konfigurasi callback untuk pengiriman log

SDK Simple Log Service untuk Flutter mendukung callback saat log dikirim atau gagal dikirim. Informasi callback akan dihasilkan sehingga Anda dapat memantau status SDK atau memperbarui pengaturan parameternya.

_aliyunLogSdk!.setLogCallback((resultCode, errorMessage, logBytes, compressedBytes) {
	// Terjadi kesalahan parameter. Anda perlu memperbarui pengaturan parameter.
	if (LogProducerResult.parametersInvalid == resultCode) {
	// Misalnya, Anda dapat mengubah parameter Endpoint.
	_aliyunLogSdk!.setEndpoint('your endpoint');
	// Kesalahan parametersInvalid terjadi karena pasangan AccessKey tidak ditentukan atau tidak valid.
	_aliyunLogSdk!.setAccessKey('your access key id', 'your access key secret', securityToken: 'your token');
}

 	// Terjadi kesalahan timeout otorisasi. Anda perlu memperbarui pasangan AccessKey Anda.
	if (LogProducerResult.sendUnauthorized == resultCode) {
		_aliyunLogSdk!.setAccessKey('your access key id', 'your access key secret', securityToken: 'your token');
	}
});

Aktifkan unggah yang dapat dilanjutkan (resumable upload)

Penting

Jika ingin mengaktifkan fitur unggah yang dapat dilanjutkan, Anda harus mengaktifkannya saat menginisialisasi AliyunLogDartSdk. Setelah SDK diinisialisasi, Anda tidak dapat mengubah parameter terkait unggah yang dapat dilanjutkan secara dinamis.

Kode contoh untuk mengaktifkan unggah yang dapat dilanjutkan saat AliyunLogDartSdk diinisialisasi:

configuration.persistent = true; // Aktifkan unggah yang dapat dilanjutkan.
configuration.persistentFilePath = 'flutter/demo'; // Jalur cache untuk log biner.
configuration.persistentForceFlush = false; // Nonaktifkan refresh paksa. Kami menyarankan agar Anda menonaktifkan refresh paksa karena dapat menurunkan performa sistem.
configuration.persistentMaxFileCount = 10; // Jumlah maksimum file yang dapat di-cache. Nilai default: 10.
configuration.persistentMaxFileSize = 1024 * 1024; // Ukuran maksimum setiap file yang di-cache. Nilai default: 1024 * 1024.
configuration.persistentMaxLogCount=64 * 1024; // Jumlah maksimum log yang dapat di-cache. Nilai default: 64 * 1024.
_aliyunLogSdk = AliyunLogDartSdk();
LogProducerResult result = await _aliyunLogSdk!.initProducer(configuration);

Konfigurasi parameter dalam kelas LogProducerConfiguration

Tabel berikut menjelaskan parameter yang dapat dikonfigurasi dalam kelas LogProducerConfiguration.

Parameter

Tipe data

Deskripsi

endpoint

string

Endpoint Simple Log Service untuk wilayah tempat project berada. Contoh: cn-hangzhou.log.aliyuncs.com. Untuk informasi selengkapnya tentang cara memperoleh endpoint, lihat Endpoints.

project

string

Nama project. Untuk informasi selengkapnya, lihat Project.

logstore

string

Nama Logstore. Untuk informasi selengkapnya, lihat Logstore.

accesskeyId

string

ID AccessKey yang digunakan untuk mengakses Simple Log Service. Untuk informasi selengkapnya tentang cara memperoleh ID AccessKey, lihat Pasangan AccessKey.

accessKeySecret

string

Rahasia AccessKey yang digunakan untuk mengakses Simple Log Service. Untuk informasi selengkapnya tentang cara memperoleh rahasia AccessKey, lihat Pasangan AccessKey.

securityToken

string

Token STS yang digunakan untuk memperoleh pasangan AccessKey temporary. Jika Anda menggunakan STS untuk memperoleh pasangan AccessKey temporary, Anda harus mengonfigurasi parameter ini. Untuk informasi selengkapnya tentang cara memperoleh token STS, lihat AssumeRole.

debuggable

bool

Menentukan apakah mode debugging diaktifkan. Nilai default: false.

Jika Anda mengalami masalah dalam pengumpulan data, kami menyarankan agar Anda mengaktifkan mode debugging.

maxBufferLimit

int

Memori maksimum yang tersedia. Nilai default: 64*1024*1024. Satuan: byte.

connectTimeout

int

Waktu timeout untuk koneksi jaringan. Nilai default: 10. Satuan: detik. Kami menyarankan agar Anda mempertahankan nilai default.

sendTimeout

int

Waktu timeout untuk operasi pengiriman. Nilai default: 15. Satuan: detik. Kami menyarankan agar Anda mempertahankan nilai default.

ntpTimeOffset

int

Selisih antara waktu perangkat dan waktu standar. Nilai default: 0. Satuan: detik. Kami menyarankan agar Anda mempertahankan nilai default. SDK mendukung koreksi waktu otomatis.

maxLogDelayTime

int

Selisih antara waktu log dan waktu lokal. Nilai default: 7. Satuan: hari. Jika nilai ini terlampaui, SDK akan menangani masalah berdasarkan pengaturan parameter dropDelayLog. Kami menyarankan agar Anda mempertahankan nilai default.

dropDelayLog

bool

Menentukan apakah log yang selisih waktunya melebihi nilai parameter maxLogDelayTime akan dibuang. Nilai default: false. __time__

Nilai bidang __time__ akan diatur ulang ke waktu saat ini.

dropUnauthorizedLog

bool

Menentukan apakah log yang mencatat kegagalan autentikasi akan dibuang. Nilai default: false.

source

string

Sumber log, yang sama dengan nilai bidang __source__. Nilai default: Android atau iOS.

topic

string

Topik log, yang sama dengan nilai bidang __topic__. Tidak ada nilai default.

_tags

string

Metadata tag, yang sama dengan nilai bidang __tag__:xxx:yyy. Tidak ada nilai default. Anda dapat menggunakan metode LogProducerConfiguration.addTag() atau AliyunLogDartSdk.addTag() untuk menambahkan tag.

packetLogBytes

int

Ukuran setiap paket log yang perlu dikirim. Nilai valid: 1 hingga 5242880. Satuan: byte. Nilai default: 1024 * 1024.

packetLogCount

int

Jumlah maksimum log dalam setiap paket log yang perlu dikirim. Nilai valid: 1 hingga 4096. Nilai default: 1024.

packetTimeout

int

Waktu timeout menunggu paket log sebelum dikirim. Paket log akan langsung dikirim saat timeout tercapai. Nilai default: 3000. Satuan: milidetik.

persistent

boolean

Menentukan apakah unggah yang dapat dilanjutkan (resumable upload) diaktifkan. Nilai default: false. Kami menyarankan agar Anda mengaktifkan fitur ini.

persistentForceFlush

boolean

Menentukan apakah refresh paksa diaktifkan untuk setiap pemanggilan metode addLog. Nilai valid:

true: Kami menyarankan agar Anda tidak mengaktifkan refresh paksa karena dapat menurunkan performa sistem.

false (default):

Jika bisnis Anda memerlukan keandalan tinggi, kami menyarankan agar Anda mengaktifkan refresh paksa.

persistentFilePath

string

Jalur cache untuk log biner saat Anda mengaktifkan unggah yang dapat dilanjutkan. Nilai default: string kosong.

Penting

Pastikan jalur tersebut tersedia. Tentukan jalur berbeda untuk setiap instans AliyunLogDartSdk.

persistentMaxFileCount

int

Jumlah maksimum file persisten. Nilai default: 10.

persistentMaxFileSize

int

Ukuran maksimum setiap file persisten. Satuan: byte. Nilai default: 1024 * 1024.

persistentMaxLogCount

int

Jumlah maksimum log yang dapat di-cache. Nilai default: 64 * 1024.

Kode kesalahan

Kode kesalahan

Deskripsi

Solusi

invalid

SDK telah dihapus atau tidak valid.

  1. Periksa apakah SDK telah diinisialisasi.

  2. Periksa apakah metode destroy() telah dipanggil.

writeError

Terjadi kesalahan penulisan data karena trafik penulisan project telah mencapai batas atas.

Sesuaikan batas atas trafik penulisan untuk project tersebut. Untuk informasi selengkapnya, lihat Sesuaikan kuota sumber daya.

dropError

Cache penuh.

Ubah parameter maxBufferLimit, persistentMaxLogCount, dan persistentMaxFileSize, lalu coba lagi. Anda dapat mengubah parameter tersebut sesuai petunjuk dalam bagian "Konfigurasikan parameter dalam kelas LogProducerConfiguration" dalam topik ini.

sendNetworkError

Terjadi kesalahan jaringan.

Periksa koneksi jaringan dan coba lagi.

sendQuotaError

Trafik penulisan project telah mencapai batas atas.

Sesuaikan batas atas trafik penulisan untuk project tersebut. Untuk informasi selengkapnya, lihat Sesuaikan kuota sumber daya.

sendUnauthorized

AccessKey telah kedaluwarsa atau tidak valid, atau kebijakan izin Pengguna RAM yang terkait dengan pasangan AccessKey tersebut dikonfigurasi secara salah.

Periksa pasangan AccessKey tersebut.

Pastikan Pengguna RAM memiliki izin management atas resource Simple Log Service. Untuk informasi selengkapnya, lihat Langkah 2: Berikan izin kepada Pengguna RAM.

sendServerError

Terjadi kesalahan layanan.

Kirim ticket untuk menghubungi dukungan teknis.

sendDiscardError

Data dibuang. Umumnya, kesalahan ini disebabkan oleh ketidakkonsistenan antara waktu perangkat dan waktu server.

SDK secara otomatis mengirim ulang data tersebut.

sendTimeError

Waktu perangkat tidak tersinkronisasi dengan waktu server.

SDK secara otomatis memperbaiki kesalahan ini.

sendExitBuffered

Saat SDK dihapus, data yang di-cache belum sempat dikirim.

Kami menyarankan agar Anda mengaktifkan unggah yang dapat dilanjutkan untuk mencegah kehilangan data.

parametersInvalid

Terjadi kesalahan parameter saat inisialisasi SDK.

Periksa pengaturan parameter seperti AccessKey, Endpoint, Project, dan Logstore.

persistentError

Gagal menulis data yang di-cache ke disk sistem.

1. Periksa apakah jalur file cache dikonfigurasi dengan benar.

2. Periksa apakah file cache penuh.

3. Periksa apakah ruang disk sistem mencukupi.

unknown

Terjadi kesalahan yang tidak diketahui.

Coba lagi nanti. Jika kesalahan tetap berlanjut, submit a ticket untuk menghubungi dukungan teknis.