Datadog の flutter プラグインを使用すると、Flutter アプリケーションから Datadog へログを送信すると共に、次の機能を利用できます。
- Datadog に JSON 形式でネイティブに記録する。
- デフォルトを使用し、送信される各ログにカスタム属性を追加する。
- 実際のクライアント IP アドレスとユーザーエージェントを記録する。
- 自動一括ポストによって最適化されたネットワークの利用を活用します。
セットアップ
Datadog Flutter SDK for Logs を初期化するには、セットアップを参照してください。
Datadog Flutter SDK を LoggingConfiguration
パラメーターで初期化したら、DatadogLogger
を作成して、Datadog にログを送信できます。
final logConfiguration = DatadogLoggerConfiguration(
remoteLogThreshold: LogLevel.debug,
networkInfoEnabled: true,
);
final logger = DatadogSdk.instance.logs?.createLogger(logConfiguration);
logger?.debug("A debug message.");
logger?.info("Some relevant information?");
logger?.warn("An important warning...");
logger?.error("An error was met!");
createLogger
メソッドを使用して、異なるサービスや名前を持つ追加のロガーを作成することも可能です。
final myLogger = DatadogSdk.instance.logs?.createLogger(
DatadogLoggerConfiguration(
service: 'com.example.custom_service',
name: 'Additional logger'
)
);
myLogger?.info('Info from my additional logger.');
利用可能なロギングオプションの詳細については、DatadogLoggerConfiguration クラスのドキュメントを参照してください。
タグの管理
ロガーに設定されたタグは、各ロガーにローカルです。
タグを追加
DatadogLogger.addTag
メソッドを使い、指定されたロガーから送信されるすべてのログにタグを追加します。
// これにより、"build_configuration:debug" タグが追加されます
logger.addTag("build_configuration", "debug")
タグを削除
DatadogLogger.removeTag
メソッドを使い、指定されたロガーから送信されるすべてのログからタグを削除します。
// これにより "build_configuration" で始まるすべてのタグが削除されます
logger.removeTag("build_configuration")
詳しくは、タグ入門をご覧ください。
属性の管理
ロガーに設定された属性は、各ロガーにローカルです。
デフォルト属性
デフォルトで、ロガーにより送信されるすべてのログに次の属性が追加されます。
http.useragent
と抽出された device
と OS
プロパティnetwork.client.ip
と抽出された地理的プロパティ (country
, city
)logger.version
、Datadog SDK バージョンlogger.thread_name
, (main
, background
)version
、Info.plist
または application.manifest
のいずれかから抽出されたクライアントのアプリバージョンenvironment
、SDK の初期化に使われる環境名
属性を追加
DatadogLogger.addAttribute
メソッドを使い、指定されたロガーから送信されるすべてのログにカスタム属性を追加します。
logger.addAttribute("user-status", "unregistered")
value
には StandardMessageCodec
クラスでサポートされているほとんどのタイプを指定することができます。
属性を削除
DatadogLogger.removeAttribute
メソッドを使い、指定されたロガーから送信されるすべてのログからカスタム属性を削除します。
// これにより、"user-status" 属性は今後送信されるすべてのログから削除されます。
logger.removeAttribute("user-status")
ログ出力のカスタマイズ
デフォルトでは、デバッグ用ビルドの場合、DatadogLogger
はすべてのログを以下の形式で Flutter コンソールに出力します。
これは、 DatadogLoggerConfiguration.customConsoleLogFunction
を設定することでカスタマイズ可能です。一定のレベル以下のログをフィルタリングするには、これを simpleConsolePrintForLevel
に設定します。
final config = DatadogLoggerConfiguration(
// その他の構成オプション...
customConsoleLogFunction: simpleConsolePrintForLevel(LogLevel.warn),
);
また、カスタム関数を提供することで、Datadog ログを logger などの他のログパッケージに転送することもできます。
var Logger logger;
void customDatadogLog(LogLevel level,
String message,
String? errorMessage,
String? errorKind,
StackTrace? stackTrace,
Map<String, Object?> attributes,) {
// Logger とレベルマッピング用のカスタム関数があると仮定:
logger.log(mapLogLevels(level), message, error: errorKind, stackTrace: stackTrace);
}
final datadogLogger = DatadogSdk.instance.logs?.createLogger(
DatadogLoggerConfiguration(
// その他の構成オプション...
customConsoleLogFunction: simpleConsolePrintForLevel(LogLevel.warn),
);
);
その他の参考資料