So verhindern Sie, dass Firebase beim Start der App Statusaktualisierungen protokolliert

98

Jedes Mal, wenn ich die FireBase-App starte, wird der Status verschiedener Firebase-Funktionen protokolliert. Im Moment wird Folgendes protokolliert:

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

Ich habe die Pods durchgesehen und keine Druckanweisungen gefunden. Wie könnte ich sonst verhindern, dass diese über die Zeit protokolliert werden, in der ich die App ausführe?

TekShock
quelle
3
Ich stimme mit Ihnen ein. Ich suche auch nach einer Möglichkeit, die Nachrichten zu deaktivieren.
Gui Moura
1
Hast du eine Methode gefunden?
Gilian
Es sollte auf jeden Fall einen Grund geben, Nachrichten auszuschalten. Es spielt keine Rolle, wie viele von ihnen protokolliert werden. Es macht mir nichts aus, Warnungen und Fehler zu erhalten, aber die ersten Nachrichten lenken ab, ohne Zweifel.
Jakub Truhlář

Antworten:

117

Sie können die Debug-Protokollierung mit dem Flag deaktivieren -FIRDebugDisabled.

Sie können es Ihrem Schema hinzufügen :

  1. Wählen Sie Schema - Symbolleiste
  2. Schema bearbeiten
  3. Wählen Sie Ausführen
  4. Klicken Sie auf Argumente und fügen Sie hinzu -FIRDebugDisabled
Ian Barber
quelle
1
Ah, ich habe mich bei den Ingenieuren gemeldet - diese Nachrichten werden trotzdem protokolliert. Mit der Flagge ist das alles, was Sie sehen sollten.
Ian Barber
20
A -noFIRAnalyticsDebugEnabledwurde in umbenannt -FIRDebugDisabled. Andere Schritte sind die gleichen.
Marat Saytakov
3
Nicht wirklich gut (dies wird wahrscheinlich nicht zu Code-Repositorys usw. hinzugefügt und verursacht daher je nach Erstellungsmethode unterschiedlichen Code (denken Sie an Ausführen / Archivieren)). Standardmäßig sollten Release-Builds Protokolle AUS haben ... IMHO 😎
Jonny
1
Dies hat den schrecklichen Nebeneffekt, dass der Debug-Modus für Firebase-Analysen
deaktiviert wird
62

FirebaseConfiguration.shared.setLoggerLevel(.min)Vorher hinzufügen FirebaseApp.configure(), um die minimale Protokollierungsmenge zu erreichen.

func setupFirebase() {
  FirebaseConfiguration.shared.setLoggerLevel(.min)
  FirebaseApp.configure()
}
Raphael Oliveira
quelle
Das macht den Job!
Kyle Goslan
3
Code wurde auf FIRConfiguration.sharedInstance () aktualisiert. SetLoggerLevel (.min)
Chrishan
16

Standardmäßig protokolliert Firebase Informationen, Fehler und Warnungen.
So können Sie den Logger-Level einstellen, für den Sie ihn benötigen.
Wenn Sie .Error einstellen, erhalten Sie nur dann ein Min-Protokoll, wenn ein Fehler auftritt.

setLoggerLevel vor FirebaseApp.configure () wie unten gezeigt

In Swift 2.3 und Firebase 4

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

In Swift 3 und Firebase 4

 FirebaseConfiguration.shared.setLoggerLevel(.min)
 FirebaseApp.configure()
Sujay UN
quelle
Wie kann ich diesen Code in Ziel c schreiben
? Können
15

In meinem Fall habe ich Folgendes getan, um den zusätzlichen Teil des Konsolenprotokolls vor Firebase zu verbergen:

  1. Navigieren Sie zu Produkt -> Schema -> Schema bearbeiten.
  2. Fügen Sie auf der Registerkarte Argumente im Abschnitt Umgebungsvariablen OS_ACTIVITY_MODE = disable hinzu

Geben Sie hier die Bildbeschreibung ein

  • Nur für den Fall, dass Sie das brauchen, deaktivieren Sie einfach das Kontrollkästchen.
  • Durch Deaktivieren von OS_ACTIVITY_MODE werden manchmal auch Protokolle für alle Ausnahmen deaktiviert

Edit 1 : Wie @ jesus-adolfo-rodriguez sagte, hängt dies mit Xcode zusammen. Wenn Sie OSLog nicht in der Xcode-Konsole verwenden möchten, setzen Sie die Umgebungsvariable OS_ACTIVITY_MODE in Ihrem Schema auf "Deaktivieren".


Bearbeiten 2:

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

Weitere Details zur FIRConfiguration-Implementierung finden Sie hier


Edit 3: 2019

Nach dieser Ausgabe: https://github.com/firebase/firebase-ios-sdk/issues/2774#issuecomment-482780714

Das Hinzufügen des Arguments -FIRDebugDisabled und das Bereinigen des Projekts haben den Trick getan.

Das Protokollierungssystem in Firebase

Das Protokollierungssystem verfügt über zwei Modi: Standardmodus und Debug-Modus. Im Standardmodus werden nur Protokolle mit Protokollstufe Hinweis, Warnung und Fehler an das Gerät gesendet. Im Debug-Modus werden alle Protokolle an das Gerät gesendet. Die von Firebase verwendeten Protokollebenen stimmen mit den ASL-Protokollebenen überein.

Aktivieren Sie den Debug-Modus, indem Sie das Argument -FIRDebugEnabled an die Anwendung übergeben. Sie können dieses Argument in das Xcode-Schema der Anwendung einfügen. Wenn der Debug-Modus über -FIRDebugEnabled aktiviert ist, befinden sich weitere Ausführungen der Anwendung ebenfalls im Debug-Modus. Um zum Standardmodus zurückzukehren, müssen Sie den Debug-Modus mit dem Anwendungsargument -FIRDebugDisabled explizit deaktivieren .

Sie können die Standardprotokollierungsstufe im Code auch ändern, indem Sie setLoggerLevel: auf der FIRConfiguration-Schnittstelle aufrufen.

Jorge Casariego
quelle
3
Dies hat nichts mit Feuerbasis zu tun
Jesus Rodriguez
und wird Ihre Analyse verbergen, wenn Sie möchten, dass sie angezeigt werden -FIRAnalyticsDebugEnabled
DogCoffee
Dadurch wurden alle Protokolle für mich deaktiviert. Wie Sie im letzten Punkt gesagt haben.
R. Mohan
Es hat mir geholfen, Nachrichten von Firebase zu reduzieren, die trotz setLoggerLevel(.min)und protokolliert wurden -FIRDebugDisabled. Gute Antwort!
Kelin
4
Hören Sie auf, den Leuten zu sagen, dass sie die gesamte Protokollierung deaktivieren sollen.
Claus Jørgensen
7
FIRConfiguration.sharedInstance().setLoggerLevel(.min)
FIRApp.configure()

In Swift 4

Chatar Veer Suthar
quelle
2
FirebaseConfiguration.shared.setLoggerLevel(.min)in FB 5.14
Adam Waite
6

Swift 4 Firebase 4.10

Legen Sie die Logger-Ebene in Ihrer AppDelegate.swift fest

FirebaseConfiguration().setLoggerLevel(FirebaseLoggerLevel.min)

Hier ist der vollständige Code:

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

Standardmäßig protokolliert Firebase Analytics nur 4 INFO-Zeilen in der Produktion + Fehler / Warnungen. Das sollte sehr wenig ausgegeben werden, wenn die Dinge richtig funktionieren. Durch Hinzufügen von -noFIRAnalyticsDebugEnabled werden nur Protokolle auf DEBUG-Ebene deaktiviert, und ERROR / WARN werden immer protokolliert. Wenn Sie Warnungen oder Fehler sehen, müssen Sie wahrscheinlich etwas tun, um die Ursache zu beheben. Einige Dinge funktionieren wahrscheinlich nicht richtig, wenn Warnungen / Fehler protokolliert werden. Eine korrekt eingerichtete App sollte keine Fehler / Warnungen protokollieren.

Mit FIRInstanceID / * gekennzeichnete Nachrichten werden von Firebase Notification protokolliert und Fehler / Warnungen werden immer protokolliert.

Djabi
quelle
3

Wie Djabi sagte, können Sie diese Protokolle nicht deaktivieren, wenn es sich um INFO, WARNING oder ERROR handelt.

Ich möchte die Antwort von Nitin Gohel ergänzen, da ich keinen Kommentar abgeben kann: Das Flag FirebaseAppDelegateProxyEnabled dient nicht zum Deaktivieren von Protokollen. Wenn Sie es deaktivieren , verlieren Sie die automatische Kampagnenverfolgung und müssen die Methoden von FIRAnalytics (AppDelegate) hinzufügen, um URL- und Benutzeraktivitäten selbst zu verarbeiten.

adbitx
quelle
3

Zum Hinzufügen zu Alex 'Antwort unter https://firebase.google.com/docs/cloud-messaging/ios/client

FirebaseAppDelegateProxyEnabled dient zum Swizzeln der Methoden Ihres App-Delegaten

Die FCM-API führt in zwei Schlüsselbereichen ein Methoden-Swizzling durch: Zuordnen Ihres APN-Tokens zum FCM-Registrierungstoken und Erfassen von Analysedaten während der Verarbeitung von Downstream-Nachrichtenrückrufen. Entwickler, die Swizzling nicht verwenden möchten, können es deaktivieren, indem sie das Flag FirebaseAppDelegateProxyEnabled in die Info.plist-Datei der App einfügen und auf NO (boolescher Wert) setzen. Relevante Bereiche der Handbücher enthalten Codebeispiele mit und ohne aktiviertem Methoden-Swizzling.

onmyway133
quelle
1

Ich denke, es gibt eine große und sehr wichtige Verwirrung.

Durch die Verwendung -FIRDebugDisabledwird der Debug-Modus deaktiviert, wodurch Ihre Messungen während des Testens und der Entwicklung beeinflusst werden .

So reduzieren Sie die Protokolle:

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

Es gibt jedoch einen Fehler in den Versionen 6.18 und 6.20.

Als Problemumgehung können Sie -noFIRAnalyticsDebugEnabledeine andere Sache verwenden. Diese deaktiviert Ihren Debug-Modus nicht.

rgkobashi
quelle
Der erste Fehler wurde am 8. August 2019 erstellt und noch nicht behoben :( Hoffentlich wird er bald
behoben