- 重要な情報
- はじめに
- 用語集
- ガイド
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- Service Management
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
Datadog の dd-sdk-ios
クライアント側ロギングライブラリを使用すると、iOS アプリケーションから Datadog へログを送信すると共に、次の機能を利用できます。
dd-sdk-ios
ライブラリは、iOS 11 以降の全バージョンをサポートしています。
パッケージマネージャーに応じてライブラリを依存関係として宣言します。
アプリケーションコンテキストと Datadog クライアントトークンでライブラリを初期化します。セキュリティ上の理由から、クライアントトークンを使用する必要があります。API キーがクライアント側の iOS アプリケーションの IPA バイトコードで公開されてしまうため、Datadog API キーを使用して dd-sdk-ios
ライブラリを構成することはできません。
クライアントトークンのセットアップについて、詳しくはクライアントトークンに関するドキュメントを参照してください。
Datadog.initialize(
appContext: .init(),
trackingConsent: trackingConsent,
configuration: Datadog.Configuration
.builderUsing(clientToken: "<client_token>", environment: "<environment_name>")
.set(serviceName: "app-name")
.set(endpoint: .us1)
.build()
)
DDConfigurationBuilder *builder = [DDConfiguration builderWithClientToken:@"<client_token>"
environment:@"<environment_name>"];
[builder setWithServiceName:@"app-name"];
[builder setWithEndpoint:[DDEndpoint us1]];
[DDDatadog initializeWithAppContext:[DDAppContext new]
trackingConsent:trackingConsent
configuration:[builder build]];
Datadog.initialize(
appContext: .init(),
trackingConsent: trackingConsent,
configuration: Datadog.Configuration
.builderUsing(clientToken: "<client_token>", environment: "<environment_name>")
.set(serviceName: "app-name")
.set(endpoint: .eu1)
.build()
)
DDConfigurationBuilder *builder = [DDConfiguration builderWithClientToken:@"<client_token>"
environment:@"<environment_name>"];
[builder setWithServiceName:@"app-name"];
[builder setWithEndpoint:[DDEndpoint eu1]];
[DDDatadog initializeWithAppContext:[DDAppContext new]
trackingConsent:trackingConsent
configuration:[builder build]];
Datadog.initialize(
appContext: .init(),
trackingConsent: trackingConsent,
configuration: Datadog.Configuration
.builderUsing(clientToken: "<client_token>", environment: "<environment_name>")
.set(serviceName: "app-name")
.set(endpoint: .us3)
.build()
)
DDConfigurationBuilder *builder = [DDConfiguration builderWithClientToken:@"<client_token>"
environment:@"<environment_name>"];
[builder setWithServiceName:@"app-name"];
[builder setWithEndpoint:[DDEndpoint us3]];
[DDDatadog initializeWithAppContext:[DDAppContext new]
trackingConsent:trackingConsent
configuration:[builder build]];
Datadog.initialize(
appContext: .init(),
trackingConsent: trackingConsent,
configuration: Datadog.Configuration
.builderUsing(clientToken: "<client_token>", environment: "<environment_name>")
.set(serviceName: "app-name")
.set(endpoint: .us5)
.build()
)
DDConfigurationBuilder *builder = [DDConfiguration builderWithClientToken:@"<client_token>"
environment:@"<environment_name>"];
[builder setWithServiceName:@"app-name"];
[builder setWithEndpoint:[DDEndpoint us5]];
[DDDatadog initializeWithAppContext:[DDAppContext new]
trackingConsent:trackingConsent
configuration:[builder build]];
Datadog.initialize(
appContext: .init(),
trackingConsent: trackingConsent,
configuration: Datadog.Configuration
.builderUsing(clientToken: "<client_token>", environment: "<environment_name>")
.set(serviceName: "app-name")
.set(endpoint: .us1_fed)
.build()
)
DDConfigurationBuilder *builder = [DDConfiguration builderWithClientToken:@"<client_token>"
environment:@"<environment_name>"];
[builder setWithServiceName:@"app-name"];
[builder setWithEndpoint:[DDEndpoint us1_fed]];
[DDDatadog initializeWithAppContext:[DDAppContext new]
trackingConsent:trackingConsent
configuration:[builder build]];
Datadog.initialize(
appContext: .init(),
trackingConsent: trackingConsent,
configuration: Datadog.Configuration
.builderUsing(clientToken: "<client_token>", environment: "<environment_name>")
.set(serviceName: "app-name")
.set(endpoint: .ap1)
.build()
)
DDConfigurationBuilder *builder = [DDConfiguration builderWithClientToken:@"<client_token>"
environment:@"<environment_name>"];
[builder setWithServiceName:@"app-name"];
[builder setWithEndpoint:[DDEndpoint ap1]];
[DDDatadog initializeWithAppContext:[DDAppContext new]
trackingConsent:trackingConsent
configuration:[builder build]];
GDPR 規制を遵守するため、SDK は初期化時に trackingConsent
値を求めます。
trackingConsent
は以下のいずれかの値で示されます。
.pending
: - SDK はデータの収集とバッチ処理を開始しますが、Datadog へは送信しません。SDK はバッチ処理が完了したデータをどうするかについての新たな同意値が得られるまで待機します。.granted
: SDK はデータの収集を開始し、Datadog へ送信します。.notGranted
: SDK はデータを収集しません。ログ、トレース、RUM イベントは Datadog に送信されません。SDK の初期化後に追跡同意値を変更するには、Datadog.set(trackingConsent:)
API 呼び出しを使用します。
SDK は新しい値に応じて動作を変更します。例えば、現在の追跡に関する同意が .pending
であった場合:
.granted
に変更すると、SDK は現在および今後のすべてのデータを Datadog に送信します。.notGranted
に変更すると、SDK は現在のすべてのデータを消去し、今後のデータを収集しません。データは Datadog にアップロードされる前に、アプリケーションサンドボックスのキャッシュディレクトリ (Library/Caches
) に平文で保存され、デバイスにインストールされた他のアプリからは読み取ることができません。
アプリケーションを作成する際、開発ログを有効にし、提供されたレベルと同等以上の優先度を持つ SDK のすべての内部メッセージをコンソールにログ出力するようにしてください。
Datadog.verbosityLevel = .debug
DDDatadog.verbosityLevel = DDSDKVerbosityLevelDebug;
Logger
の構成:
```swift
let logger = Logger.builder
.sendNetworkInfo(true)
.printLogsToConsole(true, usingFormat: .shortWith(prefix: "[iOS App] "))
.set(datadogReportingThreshold: .info)
.build()
```
```objective-c
DDLoggerBuilder *builder = [DDLogger builder];
[builder sendNetworkInfo:YES];
[builder setWithDatadogReportingThreshold:.info];
[builder printLogsToConsole:YES];
DDLogger *logger = [builder build];
```
次のいずれかのメソッドで、カスタムログエントリを Datadog に直接送信します。
```swift
logger.debug("A debug message.")
logger.info("Some relevant information?")
logger.notice("Have you noticed?")
logger.warn("An important warning...")
logger.error("An error was met!")
logger.critical("Something critical happened!")
```
```objective-c
[logger debug:@"A debug message."];
[logger info:@"Some relevant information?"];
[logger notice:@"Have you noticed?"];
[logger warn:@"An important warning..."];
[logger error:@"An error was met!"];
[logger critical:@"Something critical happened!"];
```
(任意) ログメッセージと一緒に attributes
のマップを提供し、発行されたログに属性を追加します。マップの各エントリーは属性として追加されます。
```swift
logger.info("Clicked OK", attributes: ["context": "onboarding flow"])
```
```objective-c
[logger info:@"Clicked OK" attributes:@{@"context": @"onboarding flow"}];
```
ログを Datadog に送信するようにロガーを初期化する際に、Logger.Builder
の次のメソッドを使用できます。
メソッド | 説明 |
---|---|
sendNetworkInfo(true) | すべてのログに network.client.* 属性を追加します。デフォルトで記録されるデータには、reachability (yes 、no 、maybe )、available_interfaces (wifi 、cellular など)、sim_carrier.name (例: AT&T - US )、sim_carrier.technology (3G 、LTE など)、sim_carrier.iso_country (例: US )があります。 |
set(serviceName: "<サービス名>") | Datadog に送信されるすべてのログに添付される service 標準属性 の値として <サービス名> を設定します。 |
printLogsToConsole(true) | デバッガコンソールにログを送信するには、true とします。 |
sendLogsToDatadog(true) | Datadog にログを送信するには、true とします。 |
set(loggerName: "<ロガー名>") | Datadog に送信されるすべてのログに添付される logger.name 標準属性の値として <ロガー名> を設定します。 |
build() | すべてのオプションを設定して新しいロガーインスタンスをビルドします。 |
以下の方法に従って、指定されたロガーによって送信されるすべてのログにタグと属性を追加または削除します。
addTag(withKey:value:)
メソッドを使い、指定されたロガーから送信されるすべてのログにタグを追加します。
// これにより、"build_configuration:debug" タグが追加されます
logger.addTag(withKey: "build_configuration", value: "debug")
[logger addTagWithKey:@"build_configuration" value:@"debug"];
<TAG_VALUE>
は String
である必要があります。
removeTag(withKey:)
メソッドを使い、指定されたロガーから送信されるすべてのログからタグを削除します。
// これにより "build_configuration" で始まるすべてのタグが削除されます
logger.removeTag(withKey: "build_configuration")
[logger removeTagWithKey:@"build_configuration"];
詳しくは、タグ入門をご覧ください。
デフォルトで、ロガーにより送信されるすべてのログに次の属性が追加されます。
http.useragent
と抽出された device
と OS
プロパティnetwork.client.ip
と抽出された地理的プロパティ (country
, city
)logger.version
、Datadog SDK バージョンlogger.thread_name
, (main
, background
)version
、Info.plist
から抽出されたクライアントのアプリバージョンenvironment
、SDK の初期化に使われる環境名addAttribute(forKey:value:)
メソッドを使い、指定されたロガーから送信されるすべてのログにカスタム属性を追加します。
// これにより、文字列値を持つ "device-model" 属性が追加されます
logger.addAttribute(forKey: "device-model", value: UIDevice.current.model)
[logger addAttributeForKey:@"device-model" value:UIDevice.currentDevice.model];
<ATTRIBUTE_VALUE>
には、String
、Date
、カスタム Codable
データモデルなど、Encodable
に準拠したものを指定することができます。
removeAttribute(forKey:)
メソッドを使い、指定されたロガーから送信されるすべてのログからカスタム属性を削除します。
// これにより、"device-model" 属性は今後送信されるすべてのログから削除されます。
logger.removeAttribute(forKey: "device-model")
[logger removeAttributeForKey:@"device-model"];
お役に立つドキュメント、リンクや記事: