Collecte de logs iOS
Envoyez des logs à Datadog à partir de vos applications iOS avec la bibliothèque de logging côté client dd-sdk-ios
de Datadog. Vous pourrez notamment :
- Envoyer des logs vers Datadog au format JSON en natif
- Utiliser des attributs par défaut et ajouter des attributs personnalisés à chaque log envoyé
- Enregistrer les adresses IP et user agents réels du client
- tirer parti de l’utilisation du réseau optimisée grâce aux envois groupés automatiques.
Remarque : la bibliothèque dd-sdk-androidios
prend en charge toutes les versions d’iOS à partir de la version 11.
Configuration
Déclarez la bibliothèque en tant que dépendance en fonction de votre gestionnaire de paquets :
Vous pouvez utiliser CocoaPods pour installer dd-sdk-ios
:
Pour réaliser l’intégration grâce au Swift Package Manager d’Apple, ajoutez ce qui suit en tant que dépendance à votre Package.swift
:
.package(url: "https://github.com/Datadog/dd-sdk-ios.git", .upToNextMajor(from: "1.0.0"))
Vous pouvez utiliser Carthage pour installer dd-sdk-ios
:
github "DataDog/dd-sdk-ios"
Initialisez la bibliothèque avec le contexte de votre application et votre token client Datadog. Pour des raisons de sécurité, vous devez utiliser un token client : vous ne pouvez pas utiliser les clés d’API Datadog pour configurer la bibliothèque dd-sdk-ios
, car elles risqueraient d’être exposées côté client dans le bytecode de l’IPA de l’application iOS. Pour en savoir plus sur la configuration d’un token client, consultez la documentation dédiée :
Datadog.initialize(
appContext: .init(),
trackingConsent: trackingConsent,
configuration: Datadog.Configuration
.builderUsing(clientToken: "<jeton_client>", environment: "<nom_environnement>")
.set(serviceName: "app-name")
.build()
)
Datadog.initialize(
appContext: .init(),
trackingConsent: trackingConsent,
configuration: Datadog.Configuration
.builderUsing(clientToken: "<jeton_client>", environment: "<nom_environnement>")
.set(serviceName: "app-name")
.set(endpoint: .eu)
.build()
)
Pour répondre aux exigences du RGPD, le SDK nécessite la valeur trackingConsent
à son initialisation.
trackingConsent
peut prendre l’une des valeurs suivantes :
.pending
: le SDK commence à recueillir et à regrouper les données, mais ne les envoie pas à Datadog. Le SDK attend d’obtenir la nouvelle valeur de consentement de suivi pour déterminer ce qu’il doit faire de ces données regroupées par lots..granted
: le SDK commence à recueillir les données et les envoie à Datadog..notGranted
: le SDK ne recueille aucune donnée. Les logs, traces et événements RUM ne sont pas envoyés à Datadog.
Pour modifier la valeur du consentement de suivi une fois le SDK lancé, utilisez l’appel d’API Datadog.set(trackingConsent:)
l.
Le SDK modifie son comportement en tenant compte de la nouvelle valeur. Par exemple, si le consentement de suivi actuel a pour valeur .pending
:
- si la nouvelle valeur est
.granted
, le SDK enverra toutes les données actuelles et futures à Datadog ; - si la nouvelle valeur est
.notGranted
, le SDK effacera toutes les données actuelles et ne recueillera pas les futures données.
Lors de la création de votre application, vous pouvez activer les logs de développement. Tous les messages internes dans le SDK dont la priorité est égale ou supérieure au niveau spécifié sont alors enregistrés dans les logs de la console.
Datadog.verbosityLevel = .debug
Configurez le Logger
:
logger = Logger.builder
.sendNetworkInfo(true)
.printLogsToConsole(true, usingFormat: .shortWith(prefix: "[iOS App] "))
.build()
Envoyez une entrée de log personnalisée directement à Datadog en utilisant l’une des méthodes suivantes :
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!")
(Facultatif) - Fournissez une map d’attributes
avec votre message de log pour ajouter des attributs au log envoyé. Chaque entrée de la map est ajoutée en tant qu’attribut.
logger.info("Clicked OK", attributes: ["context": "onboarding flow"])
Logging avancé
Initialisation
Les méthodes suivantes dans Logger.Builder
peuvent être utilisées lors de l’initialisation du logger afin d’envoyer des logs à Datadog :
Méthode | Description |
---|
sendNetworkInfo(true) | Ajouter des attributs network.client.* à tous les logs. Les données loguées par défaut sont les suivantes : reachability (yes , no , maybe ), available_interfaces (wifi , cellular , etc.), sim_carrier.name (p. ex. AT&T - US ), sim_carrier.technology (3G , LTE , etc.) et sim_carrier.iso_country (p. ex. US ). |
set(serviceName: "<NOM_SERVICE>") | Définir <NOM_SERVICE> en tant que valeur pour l’attribut standard service joint à tous les logs envoyés à Datadog. |
printLogsToConsole(true) | Définir ce paramètre sur true pour envoyer les logs à la console de debugging. |
sendLogsToDatadog(true) | Définir ce paramètre sur true pour envoyer les logs à Datadog. |
set(loggerName: "<NOM_LOGGER>") | Définir <NOM_LOGGER> en tant que valeur pour l’attribut logger.name joint à tous les logs envoyés à Datadog. |
build() | Créer une instance de logger avec toutes les options définies. |
Configuration globale
Vous trouverez ci-dessous des méthodes pour ajouter/supprimer les tags et les attributs de tous les logs envoyés par un logger donné.
Utilisez la méthode addTag(withKey:value:)
pour ajouter des tags à tous les logs envoyés par un logger spécifique :
// Ajouter un tag build_configuration:debug
logger.addTag(withKey: "build_configuration", value: "debug")
Remarque : <VALEUR_TAG>
doit être une chaîne
.
Utilisez la méthode removeTag(withKey:)
pour supprimer des tags de tous les logs envoyés par un logger spécifique :
// Supprimer tous les tags commençant par build_configuration
logger.removeTag(withKey: "build_configuration")
En savoir plus sur les tags Datadog.
Attributs globaux
Ajouter des attributs
Par défaut, les attributs suivants sont ajoutés à tous les logs envoyés par un logger :
http.useragent
et ses propriétés extraites device
et OS
network.client.ip
et ses propriétés géographiques extraites (country
, city
)logger.version
, la version du SDK Datadoglogger.thread_name
, (main
, background
)version
, la version de l’application du client extraite de Info.plist
environment
, le nom de l’environnement utilisé pour initialiser le SDK
Utilisez la méthode addAttribute(forKey:value:)
pour ajouter un attribut personnalisé à tous les logs envoyés par un logger spécifique :
// Ajouter un attribut device-model avec une valeur sous forme de chaîne
logger.addAttribute(forKey: "device-model", value: UIDevice.current.model)
Remarque : <VALEUR_ATTRIBUT>
peut être n’importe quelle valeur de type encodable
(chaîne
, date
, modèle de données codable
personnalisé, etc.)
Supprimer des attributs
Utilisez la méthode removeAttribute(forKey:)
pour supprimer un attribut personnalisé de tous les logs envoyés par un logger spécifique :
// Supprimer l'attribut device-model de tous les prochains logs envoyés.
logger.removeAttribute(forKey: "device-model")
Pour aller plus loin
Documentation, liens et articles supplémentaires utiles: