すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:Flutter SDK クイックスタート

最終更新日:Mar 22, 2026

SLS Flutter SDK を使用して、Flutter アプリケーションから Simple Log Service (SLS) にログを収集して送信します。この SDK は Android 4.0 以降および iOS 10.0 以降をサポートしており、再開可能なアップロード、動的構成、ログコールバックなどの特徴があります。

リリースノート

SLS Flutter SDK は、公式の Dart パッケージリポジトリで公開されています。詳細については、「Aliyun Log Flutter Release」をご参照ください。

サンプルコード

完全な動作例については、「Aliyun Log Flutter SDK Example」をご参照ください。

前提条件

  • Flutter 開発環境をインストールします。

  • SLS Flutter SDK は、Android 4.0 以降および iOS 10.0 以降をサポートしています。

    • iOS ビルドの場合、Podfile に以下を追加する必要があります:

      source 'https://github.com/CocoaPods/Specs.git'
      source 'https://github.com/aliyun-sls/Specs.git'
      # 中国本土のリポジトリを使用している場合は、この行も追加する必要があります。
      source 'https://gitee.com/aliyun-sls/Specs.git'

操作手順

ステップ 1: SDK のインストール

  1. Flutter プロジェクトを作成します。

  2. SLS Flutter SDK モジュールを追加します。プロジェクトのルートから、次のコマンドを実行します:

    flutter pub add aliyun_log_dart_sdk

    プロセスが完了すると、プロジェクトの pubspec.yaml ファイルに次の情報が自動的に追加され、flutter pub get が暗黙的に実行されます。

    dependencies:
     aliyun_log_dart_sdk: ^1.0.0 // その他のバージョン情報については、Flutter SDK の概要をご参照ください。
  3. Dart ファイルにパッケージをインポートします。

    import 'package:aliyun_log_dart_sdk/aliyun_log_dart_sdk.dart';

ステップ 2: SDK の初期化

次のコードは、基本的な初期化を示しています。ログパッケージのサイズや再開可能なアップロードなどの詳細設定オプションについては、「構成パラメーター」をご参照ください。

import 'package:aliyun_log_dart_sdk/aliyun_log_dart_sdk.dart';

AliyunLogDartSdk? _aliyunLogSdk;

void _initProducer() async {
  // エンドポイント、プロジェクト名、Logstore 名を設定します。
    LogProducerConfiguration configuration = LogProducerConfiguration(
      endpoint: 'your endpoint', project: 'your project', logstore: 'your logstore'
    ); 
  // Alibaba Cloud AccessKey。AccessKey ペアを使用すると、リソースへのフルアクセスが許可されるため、リスクが伴います。API 呼び出しには RAM ユーザーを使用することを強く推奨します。
    configuration.accessKeyId = 'your access key id';
    configuration.accessKeySecret = 'your access key secret';
    configuration.securityToken = 'your access key token'; // セキュリティトークンサービス (STS) からの一時的な AccessKey を使用する場合にのみ必要です。
    _aliyunLogSdk = AliyunLogDartSdk();
    LogProducerResult result = await _aliyunLogSdk!.initProducer(configuration);
}

ステップ 3: ログの送信

addLog メソッドを呼び出して、カスタムビジネスログを送信します:

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': '中国語のコンテンツ'
});

code == LogProducerResult.ok の場合のみ、ログは正常に送信されます。それ以外の場合は、エラーコードが返されます。詳細については、「エラーコード」をご参照ください。

ステップ 4: 難読化ルールの設定 (Android)

Flutter プロジェクトで難読化ルールが有効になっている場合 (これらのルールは Flutter v1.16.2 以降ではデフォルトで有効になっています)、プロジェクトの難読化構成ファイルに次のルールも追加する必要があります。そうしないと、Android プロジェクトが正しく実行されない可能性があります。iOS プロジェクトはこのルールの影響を受けません。

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

動的構成

次のパラメーターは、ランタイムで更新できます:Endpoint、Project、Logstore、および AccessKey。

  • Endpoint、Project、Logstore を更新します。

    await _aliyunLogSdk!.setEndpoint('new-endpoint');
    await _aliyunLogSdk!.setProject('new-project-name');
    await _aliyunLogSdk!.setLogstore('new-logstore-name');
  • AccessKey を更新します。

    // securityToken はオプションです。AccessKey がセキュリティトークンサービス (STS) を通じて取得された場合にのみ必要です。
    await _aliyunLogSdk!.setAccessKey('your accesskey id', 'your accesskey secret', securityToken: 'your accesskey token');
  • source、topic、tag パラメーターを更新します。

    await _aliyunLogSdk!.setSource('flutter');
    await _aliyunLogSdk!.setTopic('flutter-test');
    await _aliyunLogSdk!.addTag('tag1', 'value1');
    await _aliyunLogSdk!.addTag('tag2', 'value2');
  • その他のパラメーターを更新します。

    重要

    AliyunLogDartSdk.updateConfiguration() は、ランタイムでの再開可能なアップロードパラメーターの更新をサポートしていません。

    LogProducerConfiguration configuration = LogProducerConfiguration();
    configuration.dropDelayLog = true;
    configuration.dropUnauthorizedLog = true;
    // LogProducerConfiguration クラスの他のパラメーターもこの方法で設定できます。
    await _aliyunLogSdk!.updateConfiguration(configuration);

ログコールバックの設定

ログ送信操作にコールバックを設定します。コールバックは成功時と失敗時の両方でトリガーされ、SDK ステータスのモニタリングと構成の更新を可能にします。

_aliyunLogSdk!.setLogCallback((resultCode, errorMessage, logBytes, compressedBytes) {
	// パラメーターが無効です。構成を更新する必要があります。
	if (LogProducerResult.parametersInvalid == resultCode) {
	// たとえば、Endpoint を更新します。
	_aliyunLogSdk!.setEndpoint('your endpoint');
	// AccessKey がないか、正しくない場合も parametersInvalid がトリガーされます。
	_aliyunLogSdk!.setAccessKey('your access key id', 'your access key secret', securityToken: 'your token');
}

 	// 権限付与が期限切れです。AccessKey を更新する必要があります。
	if (LogProducerResult.sendUnauthorized == resultCode) {
		_aliyunLogSdk!.setAccessKey('your access key id', 'your access key secret', securityToken: 'your token');
	}
});

再開可能なアップロードの有効化

重要

再開可能なアップロード機能を有効にするには、AliyunLogDartSdk の初期化時に有効にする必要があります。SDK の初期化後に、再開可能なアップロード構成を動的に変更することはできません。

初期化中に再開可能なアップロードを構成します:

configuration.persistent = true; // 再開可能なアップロードを有効にします。
configuration.persistentFilePath = 'flutter/demo'; // binlog をキャッシュするディレクトリ。
configuration.persistentForceFlush = false; // 強制フラッシュを無効にします。有効にするとパフォーマンスに影響する可能性があるため、無効のままにしてください。
configuration.persistentMaxFileCount = 10; // キャッシュされるファイルの最大数。デフォルト:10。
configuration.persistentMaxFileSize = 1024 * 1024; // 単一のキャッシュファイルの最大サイズ (バイト単位)。デフォルト:1024 * 1024。
configuration.persistentMaxLogCount = 64 * 1024; // キャッシュされるログの最大数。デフォルト:64 * 1024。
_aliyunLogSdk = AliyunLogDartSdk();
LogProducerResult result = await _aliyunLogSdk!.initProducer(configuration);

パラメーター

LogProducerConfiguration クラスでサポートされているパラメーターを次の表に示します。

パラメーター

タイプ

説明

endpoint

string

プロジェクトが存在するリージョンのエンドポイント。例:cn-hangzhou.log.aliyuncs.com。詳細については、「エンドポイント」をご参照ください。

project

string

プロジェクトの名前。詳細については、「プロジェクト」をご参照ください。

logstore

string

Logstore の名前。詳細については、「Logstore」をご参照ください。

accessKeyId

string

ご利用の AccessKey ID。詳細については、「AccessKey ペア」をご参照ください。

accessKeySecret

string

ご利用の AccessKey Secret。詳細については、「AccessKey ペア」をご参照ください。

securityToken

string

セキュリティトークンサービス (STS) 認証に必要なセキュリティトークン。詳細については、「AssumeRole」をご参照ください。

debuggable

bool

デバッグモードを有効にするかどうかを指定します。デフォルト:false。

ログ収集の問題をトラブルシューティングする際に、このモードを有効にします。

maxBufferLimit

int

SDK がキャッシュに使用できる最大メモリ。単位:バイト。デフォルト:64 * 1024 * 1024。

connectTimeout

int

ネットワーク接続のタイムアウト期間 (秒単位)。デフォルト:10。必要な場合を除き、この値を変更しないでください。

sendTimeout

int

データ送信のタイムアウト期間 (秒単位)。デフォルト:15。必要な場合を除き、この値を変更しないでください。

ntpTimeOffset

int

デバイス時間と標準時間の差 (秒単位)。デフォルト:0。SDK は自動的に時間を修正するため、必要な場合を除き、この値を変更しないでください。

maxLogDelayTime

int

ログのタイムスタンプとローカルデバイス時間との間で許容される最大時間差。単位:秒。デフォルト:7 * 24 * 3600。この値を超えた場合、ログは dropDelayLog パラメーターに基づいて処理されます。必要な場合を除き、この値を変更しないでください。

dropDelayLog

bool

maxLogDelayTime を超えるログの処理ポリシーを指定します。デフォルト値は false で、ログは破棄されないことを意味します。__time__

フィールドは現在の時刻にリセットされます。

dropUnauthorizedLog

bool

認証に失敗したログを破棄するかどうかを指定します。デフォルト:false。

source

string

__source__

ログのソースを示すフィールドです。デフォルト: Android または iOS。

topic

string

__トピック__

フィールドで、Log Topic を示します。デフォルト値はありません。

Tags (addTag() メソッド経由)

string

__tag__:xxx:yyy

フィールドの値で、タグメタデータです。このフィールドにはデフォルト値がありません。LogProducerConfiguration.addTag() または AliyunLogDartSdk.addTag() を呼び出して、この値を設定する必要があります。

メソッド。

packetLogBytes

int

送信される各ログパッケージのサイズ。有効な値:1~5,242,880。単位:バイト。デフォルト:1024 * 1024。

packetLogCount

int

各パッケージ内のログの最大数。有効な値:1~4,096。デフォルト:1,024。

packetTimeout

int

ログパッケージのタイムアウト期間。タイムアウトに達した場合、パッケージは直ちに送信されます。単位:ミリ秒。デフォルト:3000。

persistent

boolean

再開可能なアップロード機能を有効にするかどうかを指定します。デフォルト:false。データ損失を防ぐために、この機能を有効にしてください。

persistentForceFlush

boolean

addLog が呼び出されるたびにキャッシュを強制的にフラッシュするかどうかを指定します。

true:有効。有効にするとパフォーマンスに影響する可能性があります。

false (デフォルト):無効。

高い信頼性が求められるシナリオでのみ、この機能を有効にしてください。

persistentFilePath

string

再開可能なアップロードのためにキャッシュされた binlog を保存するパス。デフォルト:空の文字列。

重要

指定されたパスは存在する必要があります。各 AliyunLogDartSdk インスタンスには一意のパスが必要です。

persistentMaxFileCount

int

永続ファイルの最大数。デフォルト:10。

persistentMaxFileSize

int

各永続ファイルの最大サイズ (バイト単位)。デフォルト:1024*1024。

persistentMaxLogCount

int

キャッシュできるログの最大数。デフォルト:64*1024。

エラーコード

エラーコード

説明

ソリューション

invalid

SDK が初期化されていないか、破棄されています。

SDK が正しく初期化され、destroy() メソッドが呼び出されていないことを確認してください。

writeError

書き込みエラーが発生しました。プロジェクトの書き込みトラフィッククォータを超えた可能性があります。

プロジェクトの書き込みトラフィッククォータを調整してください。詳細については、「リソースクォータの調整」をご参照ください。

dropError

キャッシュがいっぱいです。

LogProducerConfiguration クラスのパラメーターの説明を参照し、maxBufferLimit、persistentMaxLogCount、persistentMaxFileSize パラメーターの値を調整して、リトライしてください。

sendNetworkError

ネットワークエラー。

ネットワーク接続を確認して、リトライしてください。

sendQuotaError

プロジェクトの書き込みトラフィックが上限に達しました。

プロジェクトの書き込みトラフィッククォータを調整してください。詳細については、「リソースクォータの調整」をご参照ください。

sendUnauthorized

AccessKey が期限切れ、無効、または権限ポリシーが正しくありません。

ご利用の AccessKey が有効であり、関連付けられた RAM ユーザーが SLS リソースに対して必要な権限を持っていることを確認してください。

詳細については、「RAM ユーザーへの権限付与」をご参照ください。

sendServerError

サーバーエラー。

操作をリトライしてください。

sendDiscardError

データは破棄されました。これは通常、デバイスとサーバー間の時間のずれが原因です。

SDK は自動的にデータを再送します。操作は不要です。

sendTimeError

デバイスの時刻がサーバーの時刻と同期されていません。

SDK がこの問題を自動的に解決します。操作は不要です。

sendExitBuffered

SDK が破棄される前に、キャッシュデータが送信されませんでした。

データ損失を防ぐために、再開可能なアップロードを有効にしてください。

parametersInvalid

SDK の初期化パラメーターが無効です。

AccessKey、Endpoint、Project、Logstore の構成を確認してください。

persistentError

キャッシュデータのディスクへの書き込みに失敗しました。

キャッシュファイルのパスが正しく構成されていること、キャッシュがいっぱいでないこと、十分なディスク領域が利用可能であることを確認してください。

unknown

不明なエラー。

操作をリトライしてください。