Jak powstrzymać Firebase przed rejestrowaniem aktualizacji stanu po uruchomieniu aplikacji

98

Za każdym razem, gdy uruchamiam aplikację FireBase, rejestruje ona stan różnych funkcji Firebase. W tej chwili jest to rejestrowane:

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

Przejrzałem strąki i nie znalazłem żadnych instrukcji drukowania, więc jak inaczej mógłbym zapobiec ich rejestrowaniu w godzinach nadliczbowych, gdy uruchomię aplikację?

JCode
źródło
3
Zgadzam się z Tobą. Szukam również sposobu na wyłączenie wiadomości.
Gui Moura
1
Znalazłeś metodę?
Gilian
Zdecydowanie powinno być miejsce na wyłączenie wiadomości. Nie ma znaczenia, ile z nich jest zarejestrowanych. Nie mam nic przeciwko otrzymywaniu ostrzeżeń i błędów, ale początkowe komunikaty rozpraszają, nie ma co do tego wątpliwości.
Jakub Truhlář

Odpowiedzi:

119

Możesz wyłączyć rejestrowanie debugowania za pomocą flagi -FIRDebugDisabled.

Możesz dodać go do swojego schematu :

  1. Wybierz pasek narzędzi Schemat
  2. Edytuj schemat
  3. Wybierz Uruchom
  4. Kliknij Argumenty i dodaj -FIRDebugDisabled
Ian Barber
źródło
1
Ach, zameldowałem się z inżynierami - te wiadomości będą rejestrowane mimo wszystko. Jednak z flagą to wszystko, co powinieneś zobaczyć.
Ian Barber
20
A -noFIRAnalyticsDebugEnabledzostała zmieniona na -FIRDebugDisabled. Pozostałe kroki są takie same.
Marat Saytakov
3
Niezbyt dobre (prawdopodobnie nie zostanie to dodane do repozytoriów kodu itp., A zatem spowoduje inny kod w zależności od metody kompilacji (pomyśl o uruchomieniu / archiwum)). Domyślnie kompilacje wydania powinny mieć wylogowanie WYŁĄCZONE ... IMHO 😎
Jonny
1
ma to okropny efekt uboczny wyłączenia trybu debugowania dla analityki
Firebase
63

Dodaj FirebaseConfiguration.shared.setLoggerLevel(.min)przed, FirebaseApp.configure()aby uzyskać minimalną ilość logowania.

func setupFirebase() {
  FirebaseConfiguration.shared.setLoggerLevel(.min)
  FirebaseApp.configure()
}
Raphael Oliveira
źródło
To działa!
Kyle Goslan
3
Kod został zaktualizowany do FIRConfiguration.sharedInstance (). SetLoggerLevel (.min)
Chrishan
16

Domyślnie Firebase rejestruje informacje, błędy i ostrzeżenia.
Możesz więc ustawić poziom rejestratora, którego kiedykolwiek potrzebujesz.
Jeśli ustawisz .Error, otrzymasz min log tylko wtedy, gdy pojawi się błąd.

setLoggerLevel przed FirebaseApp.configure (), jak pokazano poniżej

W Swift 2.3 i Firebase 4

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

W Swift 3 i Firebase 4

 FirebaseConfiguration.shared.setLoggerLevel(.min)
 FirebaseApp.configure()
Sujay UN
źródło
Jak mogę napisać ten kod w celu c, czy możesz mi podziękować
Yogesh Patel
15

W moim przypadku, aby ukryć dodatkowy fragment dziennika konsoli z Firebase, wykonałem następujące czynności:

  1. Przejdź do Product -> Scheme -> Edit Scheme.
  2. W zakładce Argumenty w sekcji Zmienne środowiskowe dodaj OS_ACTIVITY_MODE = disable

wprowadź opis obrazu tutaj

  • Na wypadek, gdybyś tego potrzebował, po prostu odznacz to pole.
  • Wyłączenie OS_ACTIVITY_MODE czasami wyłącza również dzienniki dla wszystkich wyjątków

Edycja 1 : Jak powiedział @ jesus-adolfo-rodriguez, jest to związane z Xcode. Tak więc, jeśli nie chcesz, aby OSLog był na konsoli Xcode, umieść zmienną środowiskową OS_ACTIVITY_MODE na „wyłącz” w swoim schemacie.


Edycja 2:

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

Więcej szczegółów w implementacji FIRConfiguration tutaj


Edycja 3: 2019

Według tego wydania: https://github.com/firebase/firebase-ios-sdk/issues/2774#issuecomment-482780714

Dodanie argumentu -FIRDebugDisabled i wyczyszczenie projektu załatwiło sprawę .

System logowania w Firebase

System logowania ma dwa tryby: tryb domyślny i tryb debugowania. W trybie domyślnym do urządzenia będą wysyłane tylko dzienniki z poziomem dziennika Powiadomienie, Ostrzeżenie i Błąd. W trybie debugowania wszystkie dzienniki zostaną przesłane do urządzenia. Poziomy dziennika używane przez Firebase są zgodne z poziomami dziennika ASL.

Włącz tryb debugowania, przekazując argument -FIRDebugEnabled do aplikacji. Możesz dodać ten argument w schemacie Xcode aplikacji. Gdy tryb debugowania jest włączony poprzez -FIRDebugEnabled, dalsze wykonania aplikacji również będą w trybie debugowania. Aby powrócić do trybu domyślnego, należy jawnie wyłączyć tryb debugowania za pomocą argumentu aplikacji -FIRDebugDisabled .

Istnieje również możliwość zmiany domyślnego poziomu rejestrowania w kodzie, wywołując metodę setLoggerLevel: w interfejsie FIRConfiguration.

Jorge Casariego
źródło
3
nie ma to nic wspólnego z firebase
Jesus Rodriguez
i ukryje Twoje dane analityczne, jeśli chcesz, aby były wyświetlane -FIRAnalyticsDebugEnabled
DogCoffee
1
To spowodowało wyłączenie wszystkich dzienników. Jak powiedziałeś w ostatnim punkcie.
R. Mohan
Pomogło mi to zmniejszyć liczbę wiadomości z Firebase, które były rejestrowane pomimo setLoggerLevel(.min)i -FIRDebugDisabled. Świetna odpowiedź!
kelin
4
Przestań mówić ludziom, aby wyłączali wszystkie rejestrowanie.
Claus Jørgensen
7

Swift 4 Firebase 4.10.0

Ustaw poziom rejestratora w pliku AppDelegate.swift

FirebaseConfiguration().setLoggerLevel(FirebaseLoggerLevel.min)

Oto pełny kod:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    FirebaseConfiguration().setLoggerLevel(FirebaseLoggerLevel.min)
    FirebaseApp.configure()
    return true
}
Ondřej Ševčík
źródło
1
Od października 2020 r. Jest to jedyna odpowiedź, która pozbyła się dzienników Firebase, ale pozostawiła moje własne logowanie. Pomaga w analizowaniu tego, co się dzieje podczas uruchamiania aplikacji.
Jesse Pangburn
7
FIRConfiguration.sharedInstance().setLoggerLevel(.min)
FIRApp.configure()

W Swift 4

Chatar Veer Suthar
źródło
2
FirebaseConfiguration.shared.setLoggerLevel(.min)w FB 5.14
Adam Waite
4

Domyślnie Firebase Analytics rejestruje tylko 4 wiersze INFO w produkcji + błędy / ostrzeżenia. To powinno być bardzo mało wydajne, jeśli wszystko działa poprawnie. Dodanie -noFIRAnalyticsDebugEnabled wyłączy tylko dzienniki poziomu DEBUG, a ERROR / WARN są zawsze rejestrowane. Jeśli widzisz jakieś ostrzeżenia lub błędy, prawdopodobnie musisz zrobić coś, aby usunąć przyczynę. Niektóre rzeczy prawdopodobnie nie będą działać poprawnie, jeśli zostaną zarejestrowane ostrzeżenia / błędy. Aplikacja, która jest poprawnie skonfigurowana, nie powinna rejestrować błędów / ostrzeżeń.

Wiadomości z tagiem FIRInstanceID / * są rejestrowane przez Powiadomienie Firebase, a błędy / ostrzeżenia są zawsze rejestrowane.

djabi
źródło
3

Jak powiedział djabi, nie możesz wyłączyć tych dzienników, jeśli są to INFO, WARNING lub ERROR.

Chcę dodać do odpowiedzi Nitina Gohela, ponieważ nie mogę komentować: Flaga FirebaseAppDelegateProxyEnabled nie służy do wyłączania dzienników. Jeśli ją wyłączysz, utracisz automatyczne śledzenie kampanii i będziesz musiał dodać metody z FIRAnalytics (AppDelegate), aby samodzielnie obsługiwać adresy URL i działania użytkowników.

adbitx
źródło
3

Aby dodać do odpowiedzi Alexa, z https://firebase.google.com/docs/cloud-messaging/ios/client

FirebaseAppDelegateProxyEnabled służy do zmiany metod delegata aplikacji

Interfejs API FCM wykonuje zamianę metod w dwóch kluczowych obszarach: mapowanie tokenu APN na token rejestracji FCM i przechwytywanie danych analitycznych podczas obsługi wywołań zwrotnych wiadomości. Programiści, którzy wolą nie używać swizzlingu, mogą go wyłączyć, dodając flagę FirebaseAppDelegateProxyEnabled w pliku Info.plist aplikacji i ustawiając ją na NIE (wartość logiczna). Odpowiednie obszary przewodników zawierają przykłady kodu, zarówno z włączonym przełączaniem metod, jak i bez niego.

onmyway133
źródło
1

Myślę, że ma miejsce duże i bardzo ważne zamieszanie.

Użycie -FIRDebugDisabledgo spowoduje wyłączenie trybu debugowania, który będzie miał wpływ na pomiary podczas testowania i rozwoju .

Aby zmniejszyć dzienniki:

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

Jednak jest błąd w wersjach 6.18 i 6.20.

Jako obejście, które możesz zastosować, -noFIRAnalyticsDebugEnabledco jest inną rzeczą, ta nie wyłącza trybu debugowania.

rgkobashi
źródło
pierwszy błąd utworzony 8 sierpnia 2019 r. i jeszcze bez poprawki :( mam nadzieję, że wkrótce go naprawią. Zastanawialiśmy się nad przejściem na inne narzędzie, te dzienniki są wyjątkowo spamerskie
rgkobashi