Как запретить Firebase регистрировать обновления статуса при запуске приложения

98

Когда я запускаю приложение FireBase, оно регистрирует состояние различных функций Firebase. Прямо сейчас это то, что регистрируется:

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

Я просмотрел модули и не нашел никаких операторов печати, так как еще я могу сделать, чтобы они не регистрировались сверхурочно при запуске приложения?

JCode
источник
3
Я согласен с вами. Я тоже ищу способ отключить сообщения.
Ги Моура
1
Вы нашли способ?
Джилиан
Обязательно должен быть случай для отключения сообщений. Неважно, сколько из них зарегистрировано. Я не против получения предупреждений и ошибок, но первые сообщения, несомненно, отвлекают.
Якуб Трухларж

Ответы:

120

Вы можете отключить ведение журнала отладки с помощью флага -FIRDebugDisabled.

Вы можете добавить это в свою схему :

  1. Панель инструментов " Выбрать схему"
  2. Изменить схему
  3. Выберите Выполнить
  4. Щелкните Аргументы и добавьте -FIRDebugDisabled
Ян Барбер
источник
1
Я проверил с инженерами - эти сообщения все равно будут записаны. Но с флагом это все, что вы должны увидеть.
Ян Барбер,
20
А -noFIRAnalyticsDebugEnabledбыл переименован в -FIRDebugDisabled. Остальные шаги такие же.
Марат Сайтаков
3
Не очень хорошо (это, вероятно, не будет добавлено в репозитории кода и т.д. и, таким образом, вызовет другой код в зависимости от метода сборки (подумайте, запустить / архивировать)). По умолчанию в сборках релизов логи должны быть ВЫКЛЮЧЕНЫ ... ИМХО 😎
Джонни,
1
у этого есть ужасный побочный эффект включения режима отладки для аналитики
firebase
63

Добавьте FirebaseConfiguration.shared.setLoggerLevel(.min)перед, FirebaseApp.configure()чтобы получить минимальный объем регистрации.

func setupFirebase() {
  FirebaseConfiguration.shared.setLoggerLevel(.min)
  FirebaseApp.configure()
}
Рафаэль Оливейра
источник
Это делает свою работу!
Кайл Гослан
3
Код обновлен до FIRConfiguration.sharedInstance (). SetLoggerLevel (.min)
Chrishan
16

По умолчанию Firebase регистрирует информацию, ошибки и предупреждения.
Таким образом, вы можете установить уровень регистратора, для которого когда-либо вам нужно.
Если вы установите .Error, вы получите минимальный журнал только при возникновении ошибки.

setLoggerLevel перед FirebaseApp.configure (), как показано ниже

В Swift 2.3 и Firebase 4

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

В Swift 3 и Firebase 4

 FirebaseConfiguration.shared.setLoggerLevel(.min)
 FirebaseApp.configure()
Суджай ООН
источник
Как я могу написать этот код в
объекте
15

В моем случае, чтобы скрыть лишний кусок журнала консоли от Firebase, я сделал следующее:

  1. Перейдите в Product -> Scheme -> Edit Scheme.
  2. На вкладке «Аргументы» в разделе «Переменные среды» добавьте OS_ACTIVITY_MODE = disable

введите описание изображения здесь

  • На случай, если вам это понадобится, просто снимите флажок.
  • Отключение OS_ACTIVITY_MODE иногда также отключает журналы для всех исключений

Изменить 1 : Как сказал @ jesus-adolfo-rodriguez, это связано с Xcode. Итак, если вы не хотите, чтобы OSLog на консоли Xcode, поместите переменную среды OS_ACTIVITY_MODE в значение «disable» в вашей схеме.


Изменить 2:

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

Подробнее о реализации FIRConfiguration здесь


Редактировать 3: 2019

По этому вопросу: https://github.com/firebase/firebase-ios-sdk/issues/2774#issuecomment-482780714

Добавление аргумента -FIRDebugDisabled и очистка проекта сделали свое дело.

Система ведения журнала в Firebase

Система регистрации имеет два режима: режим по умолчанию и режим отладки. В режиме по умолчанию на устройство будут отправляться только журналы с уведомлением, предупреждением и ошибкой уровня журнала. В режиме отладки все журналы будут отправлены на устройство. Уровни журналов, которые использует Firebase, соответствуют уровням журналов ASL.

Включите режим отладки, передав аргумент -FIRDebugEnabled приложению. Вы можете добавить этот аргумент в схему Xcode приложения. Когда режим отладки включен с помощью -FIRDebugEnabled, дальнейшее выполнение приложения также будет в режиме отладки. Чтобы вернуться в режим по умолчанию, вы должны явно отключить режим отладки с помощью аргумента приложения -FIRDebugDisabled .

Также можно изменить уровень ведения журнала по умолчанию в коде, вызвав setLoggerLevel: в интерфейсе FIRConfiguration.

Хорхе Касариего
источник
3
это не имеет ничего общего с пожарной базой
Хесус Родригес
и скроет вашу аналитику, если вы хотите, чтобы она была показана -FIRAnalyticsDebugEnabled
DogCoffee
1
Это отключило для меня все журналы. Как вы сказали в последнем пункте.
Р. Мохан
Это помогло мне уменьшить сообщения от Firebase , которые регистрируются , несмотря на setLoggerLevel(.min)и -FIRDebugDisabled. Отличный ответ!
келин
4
Перестаньте говорить людям отключить ведение журнала.
Клаус Йоргенсен
7

Swift 4 Firebase 4.10

Установите уровень логгера в вашем AppDelegate.swift

FirebaseConfiguration().setLoggerLevel(FirebaseLoggerLevel.min)

Вот полный код:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    FirebaseConfiguration().setLoggerLevel(FirebaseLoggerLevel.min)
    FirebaseApp.configure()
    return true
}
Ондржей Шевчик
источник
1
По состоянию на октябрь 2020 года это единственный ответ, который избавил от журналов Firebase, но оставил мое собственное ведение журнала. Помогает анализировать, что происходит при запуске вашего приложения.
Джесси Пэнгберн,
7
FIRConfiguration.sharedInstance().setLoggerLevel(.min)
FIRApp.configure()

В Swift 4

Чатар Вир Сутар
источник
2
FirebaseConfiguration.shared.setLoggerLevel(.min)в FB 5.14
Адам Уэйт
4

По умолчанию Firebase Analytics регистрирует только 4 строки INFO в рабочей среде + ошибки / предупреждения. Если все работает правильно, этого должно быть очень мало. Добавление -noFIRAnalyticsDebugEnabled отключит только журналы уровня DEBUG, а ERROR / WARN всегда регистрируются. Если вы видите какие-либо предупреждения или ошибки, вам, вероятно, нужно что-то предпринять, чтобы устранить причину. Некоторые вещи, скорее всего, будут работать некорректно, если предупреждения / ошибки будут регистрироваться. Приложение, которое правильно настроено, не должно регистрировать ошибки / предупреждения.

Сообщения с тегами FIRInstanceID / * регистрируются службой Firebase Notification, а ошибки / предупреждения всегда регистрируются.

джаби
источник
3

Как сказал Джаби, вы не можете отключить эти журналы, если они INFO, WARNING или ERROR.

Я хочу добавить к ответу Нитина Гохеля, поскольку не могу комментировать: флаг FirebaseAppDelegateProxyEnabled не предназначен для отключения журналов. Если вы отключите его, вы потеряете автоматическое отслеживание кампании, и вам нужно будет добавить методы из FIRAnalytics (AppDelegate) для самостоятельной обработки URL и активности пользователей.

adbitx
источник
3

Чтобы добавить к ответу Алекса, из https://firebase.google.com/docs/cloud-messaging/ios/client

FirebaseAppDelegateProxyEnabled предназначен для использования методов делегата вашего приложения

FCM API выполняет переключение методов в двух ключевых областях: сопоставление вашего токена APN с регистрационным токеном FCM и сбор аналитических данных во время обработки обратного вызова сообщения в нисходящем направлении. Разработчики, которые предпочитают не использовать swizzling, могут отключить его, добавив флаг FirebaseAppDelegateProxyEnabled в файл Info.plist приложения и установив для него значение NO (логическое значение). В соответствующих разделах руководств представлены примеры кода, как с включенным переключением методов, так и без него.

onmyway133
источник
1

Я думаю, что происходит большая и очень важная путаница.

При -FIRDebugDisabledего использовании будет отключен режим отладки, который затем повлияет на ваши измерения во время тестирования и разработки .

Чтобы уменьшить количество журналов:

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

Однако в версиях 6.18 и 6.20 есть ошибка .

В качестве обходного пути вы можете использовать -noFIRAnalyticsDebugEnabledдругое дело, оно не отключает режим отладки.

ргкобаши
источник
первая ошибка, созданная 8 августа 2019 г., и пока не исправлена ​​:( Надеюсь, они скоро исправят. Мы думали о переходе на другой инструмент, эти журналы очень спамерские
rgkobashi