Comment empêcher Firebase de consigner les mises à jour d'état lorsque l'application est lancée

98

Chaque fois que je lance l'application FireBase, elle enregistre l'état de diverses fonctionnalités de Firebase. Pour le moment, voici ce qui est enregistré:

Configuring the default app.

<FIRAnalytics/INFO> Firebase Analytics v.3200000 started

<FIRAnalytics/INFO> To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled (see ...)

<FIRAnalytics/INFO> Successfully created Firebase Analytics App Delegate Proxy automatically. To disable the proxy, set the flag FirebaseAppDelegateProxyEnabled to NO in the Info.plist

<FIRInstanceID/WARNING> FIRInstanceID AppDelegate proxy enabled, will swizzle app delegate remote notification handlers. To disable add "FirebaseAppDelegateProxyEnabled" to your Info.plist and set it to NO

<FIRAnalytics/INFO> Firebase Analytics enabled

J'ai regardé à travers les pods et je n'ai trouvé aucune déclaration imprimée, alors comment pourrais-je empêcher ces derniers d'être enregistrés pendant les heures supplémentaires que j'exécute l'application?

TekShock
la source
3
Je suis d'accord avec toi. Je cherche également un moyen de désactiver les messages.
Gui Moura
1
Avez-vous trouvé une méthode?
Gilian
Il devrait certainement y avoir un cas pour désactiver les messages. Peu importe le nombre d'entre eux enregistrés. Cela ne me dérange pas de recevoir des avertissements et des erreurs, mais les messages initiaux sont distrayants, sans aucun doute.
Jakub Truhlář

Réponses:

117

Vous pouvez désactiver la journalisation du débogage avec l'indicateur -FIRDebugDisabled.

Vous pouvez l'ajouter à votre schéma :

  1. Sélectionnez la barre d'outils Schéma
  2. Modifier le schéma
  3. Sélectionnez Exécuter
  4. Cliquez sur Arguments et ajoutez -FIRDebugDisabled
Ian Barber
la source
1
Ah, j'ai vérifié avec les ingénieurs - ces messages seront enregistrés malgré tout. Avec le drapeau, c'est tout ce que vous devriez voir.
Ian Barber
20
A a -noFIRAnalyticsDebugEnabledété renommé en -FIRDebugDisabled. Les autres étapes sont les mêmes.
Marat Saytakov le
3
Pas vraiment bien (cela ne sera probablement pas ajouté aux référentiels de code, etc. et entraînera donc un code différent en fonction de la méthode de construction (pensez à exécuter / archiver)). Par défaut, les versions de version devraient avoir des journaux OFF ... IMHO 😎
Jonny
1
cela a le terrible effet secondaire de désactiver le mode de débogage pour l'analyse de la base de feu
Hogdotmac
62

Ajoutez FirebaseConfiguration.shared.setLoggerLevel(.min)avant FirebaseApp.configure()pour obtenir le minimum de journalisation.

func setupFirebase() {
  FirebaseConfiguration.shared.setLoggerLevel(.min)
  FirebaseApp.configure()
}
Raphael Oliveira
la source
Cela fait le travail!
Kyle Goslan
3
Le code a été mis à jour vers FIRConfiguration.sharedInstance (). SetLoggerLevel (.min)
Chrishan
16

Par défaut, Firebase enregistre les informations, les erreurs et les avertissements.
Ainsi, vous pouvez définir le niveau de l'enregistreur pour chaque besoin.
Si vous définissez pour .Error, vous n'obtiendrez le journal min que lorsque l'erreur survient.

setLoggerLevel avant FirebaseApp.configure () comme indiqué ci-dessous

Dans Swift 2.3 et Firebase 4

 FirebaseConfiguration.sharedInstance().setLoggerLevel(.Error)
 FirebaseApp.configure()

Dans Swift 3 et Firebase 4

 FirebaseConfiguration.shared.setLoggerLevel(.min)
 FirebaseApp.configure()
Sujay UN
la source
Comment puis-je écrire ce code dans l'objectif c pouvez-vous s'il vous plaît me dire merci
Yogesh Patel
16

Dans mon cas, pour masquer le morceau supplémentaire du journal de la console de Firebase, j'ai fait ce qui suit:

  1. Accédez à Produit -> Schéma -> Modifier le schéma.
  2. Sous l'onglet Arguments de la section Variables d'environnement, ajoutez OS_ACTIVITY_MODE = disable

entrez la description de l'image ici

  • Juste au cas où vous en auriez besoin, décochez simplement la case.
  • La désactivation de OS_ACTIVITY_MODE désactivera parfois les journaux pour toutes les exceptions également

Edit 1 : Comme l'a dit @ jesus-adolfo-rodriguez, cela est lié à Xcode. Donc, si vous ne voulez pas OSLog sur la console Xcode, mettez la variable d'environnement OS_ACTIVITY_MODE sur «désactiver» dans votre schéma.


Modifier 2:

FirebaseConfiguration.shared.setLoggerLevel(FirebaseLoggerLevel.min)
FirebaseApp.configure()

Plus de détails dans l'implémentation FIRConfiguration ici


Edit 3: 2019

Selon ce numéro: https://github.com/firebase/firebase-ios-sdk/issues/2774#issuecomment-482780714

L' ajout de l' argument -FIRDebugDisabled et le nettoyage du projet ont fait l'affaire.

Le système de journalisation dans Firebase

Le système de journalisation a deux modes: le mode par défaut et le mode de débogage. En mode par défaut, seuls les journaux avec un avis, un avertissement et une erreur de niveau journal seront envoyés à l'appareil. En mode débogage, tous les journaux seront envoyés à l'appareil. Les niveaux de journal utilisés par Firebase sont cohérents avec les niveaux de journal ASL.

Activez le mode de débogage en transmettant l'argument -FIRDebugEnabled à l'application. Vous pouvez ajouter cet argument dans le schéma Xcode de l'application. Lorsque le mode débogage est activé via -FIRDebugEnabled, les autres exécutions de l'application seront également en mode débogage. Pour revenir au mode par défaut, vous devez désactiver explicitement le mode de débogage avec l'argument d'application -FIRDebugDisabled .

Il est également possible de modifier le niveau de journalisation par défaut dans le code en appelant setLoggerLevel: sur l'interface FIRConfiguration.

Jorge Casariego
la source
3
cela n'a rien à voir avec Firebase
Jesus Rodriguez
et masquera vos analyses si vous voulez qu'elles soient affichées -FIRAnalyticsDebugEnabled
DogCoffee
Cela a désactivé tous les journaux pour moi. Comme vous l'avez dit dans le dernier point.
R. Mohan
Cela m'a aidé à réduire les messages de Firebase qui ont été enregistrés malgré setLoggerLevel(.min)et -FIRDebugDisabled. Très bonne réponse!
kelin
4
Arrêtez de dire aux gens de désactiver toute journalisation.
Claus Jørgensen
7
FIRConfiguration.sharedInstance().setLoggerLevel(.min)
FIRApp.configure()

Dans Swift 4

Chatar Veer Suthar
la source
2
FirebaseConfiguration.shared.setLoggerLevel(.min)en FB 5.14
Adam Waite
6

Swift 4 Firebase 4.10

Définissez le niveau de journalisation dans votre AppDelegate.swift

FirebaseConfiguration().setLoggerLevel(FirebaseLoggerLevel.min)

Voici le code complet:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    FirebaseConfiguration().setLoggerLevel(FirebaseLoggerLevel.min)
    FirebaseApp.configure()
    return true
}
Ondřej Ševčík
la source
4

Par défaut, Firebase Analytics n'enregistrera que 4 lignes INFO en production + erreurs / avertissements. Cela devrait être très peu de sortie si les choses fonctionnent correctement. L'ajout de -noFIRAnalyticsDebugEnabled ne désactivera que les journaux de niveau DEBUG et ERROR / WARN sont toujours enregistrés. Si vous voyez des avertissements ou des erreurs, vous devez probablement faire quelque chose pour résoudre la cause. Certaines choses ne fonctionneront probablement pas correctement si les avertissements / erreurs sont enregistrés. L'application correctement configurée ne doit pas enregistrer les erreurs / avertissements.

Les messages marqués avec FIRInstanceID / * sont enregistrés par Firebase Notification et les erreurs / avertissements sont toujours enregistrés.

Djabi
la source
3

Comme djabi l'a dit, vous ne pouvez pas désactiver ces journaux s'ils sont INFO, WARNING ou ERROR.

Je veux ajouter à la réponse de Nitin Gohel car je ne peux pas commenter: Le drapeau FirebaseAppDelegateProxyEnabled n'est pas pour désactiver les journaux. Si vous le désactivez, vous perdrez le suivi automatique des campagnes et vous devrez ajouter les méthodes de FIRAnalytics (AppDelegate) pour gérer vous-même l'URL et l'activité des utilisateurs.

adbitx
la source
3

Pour ajouter à la réponse d'Alex, depuis https://firebase.google.com/docs/cloud-messaging/ios/client

FirebaseAppDelegateProxyEnabled est pour swizzling les méthodes de votre délégué d'application

L'API FCM effectue un basculement de méthode dans deux domaines clés: le mappage de votre jeton APN avec le jeton d'enregistrement FCM et la capture des données d'analyse pendant la gestion des rappels de messages en aval. Les développeurs qui préfèrent ne pas utiliser le swizzling peuvent le désactiver en ajoutant l'indicateur FirebaseAppDelegateProxyEnabled dans le fichier Info.plist de l'application et en le définissant sur NO (valeur booléenne). Les zones pertinentes des guides fournissent des exemples de code, avec et sans le swizzling de méthode activé.

onmyway133
la source
1

Je pense qu'il existe une grande et très importante confusion.

En l'utilisant, -FIRDebugDisabledil désactivera le mode de débogage qui affectera alors vos mesures pendant les tests et le développement .

Pour réduire les journaux:

FirebaseConfiguration.shared.setLoggerLevel(.min)
FirebaseApp.configure()

Cependant, il existe un bogue sur les versions 6.18 et 6.20.

Comme solution de contournement que vous pouvez utiliser, -noFIRAnalyticsDebugEnabledce qui est différent, celui-ci ne désactive pas votre mode de débogage.

rgkobashi
la source
premier bogue créé le 8 août 2019 et pas encore de correctif: (j'espère qu'ils le corrigeront bientôt. Nous avons pensé à passer à un autre outil, ces journaux sont extrêmement
spammés