Cómo evitar que Firebase registre actualizaciones de estado cuando se inicia la aplicación

98

Siempre que ejecuto la aplicación FireBase, registra el estado de varias funciones de Firebase. En este momento, esto es lo que se está registrando:

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

Miré a través de los pods y no encontré ninguna declaración impresa, así que, ¿de qué otra manera podría evitar que se registren en horas extras? Ejecuto la aplicación.

TekShock
fuente
3
Estoy de acuerdo contigo. También estoy buscando una forma de desactivar los mensajes.
Gui Moura
1
¿Encontraste un método?
Gilian
Definitivamente debería haber un caso para desactivar los mensajes. No importa cuántos de ellos estén registrados. No me importa recibir advertencias y errores, pero los mensajes iniciales distraen, sin duda.
Jakub Truhlář

Respuestas:

117

Puede deshabilitar el registro de depuración con la bandera -FIRDebugDisabled.

Puede agregarlo a su esquema :

  1. Seleccione la barra de herramientas Esquema
  2. Editar esquema
  3. Seleccione Ejecutar
  4. Haga clic en Argumentos y agregue -FIRDebugDisabled
Ian Barber
fuente
1
Ah, me comuniqué con los ingenieros, esos mensajes se registrarán independientemente. Sin embargo, con la bandera, eso es todo lo que deberías ver.
Ian Barber
20
A -noFIRAnalyticsDebugEnabledpasó a llamarse -FIRDebugDisabled. Los demás pasos son los mismos.
Marat Saytakov
3
No es realmente bueno (esto probablemente no se agregará a los repositorios de código, etc. y, por lo tanto, causará un código diferente según el método de compilación (piense en ejecutar / archivar)). De forma predeterminada, las compilaciones de lanzamiento deben tener registros APAGADOS ... En mi humilde opinión 😎
Jonny
1
esto tiene el terrible efecto secundario de cambiar el modo de depuración para el análisis de base de fuego
Hogdotmac
62

Agregue FirebaseConfiguration.shared.setLoggerLevel(.min)antes FirebaseApp.configure()para lograr la cantidad mínima de registro.

func setupFirebase() {
  FirebaseConfiguration.shared.setLoggerLevel(.min)
  FirebaseApp.configure()
}
Raphael Oliveira
fuente
¡Esto hace el trabajo!
Kyle Goslan
3
El código se ha actualizado a FIRConfiguration.sharedInstance (). SetLoggerLevel (.min)
Chrishan
16

De forma predeterminada, Firebase registrará información, errores y advertencias.
Entonces puede configurar el nivel de registrador para el que necesite.
Si establece .Error, obtendrá un registro mínimo solo cuando se produzca un error.

setLoggerLevel antes de FirebaseApp.configure () como se muestra a continuación

En Swift 2.3 y Firebase 4

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

En Swift 3 y Firebase 4

 FirebaseConfiguration.shared.setLoggerLevel(.min)
 FirebaseApp.configure()
Sujay ONU
fuente
¿Cómo puedo escribir este código en el objetivo c? ¿Puede decirme gracias?
Yogesh Patel
15

En mi caso, para ocultar la parte adicional del registro de la consola de Firebase, hice lo siguiente:

  1. Vaya a Producto -> Esquema -> Editar esquema.
  2. En la pestaña Argumentos en la sección Variables de entorno, agregue OS_ACTIVITY_MODE = disable

ingrese la descripción de la imagen aquí

  • En caso de que lo necesite, simplemente desmarque la casilla.
  • Deshabilitar OS_ACTIVITY_MODE a veces también deshabilitará los registros para todas las excepciones

Edición 1 : Como dijo @ jesus-adolfo-rodriguez, esto está relacionado con Xcode. Por lo tanto, si no desea OSLog en la consola de Xcode, coloque la variable de entorno OS_ACTIVITY_MODE en "deshabilitar" en su esquema.


Edición 2:

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

Más detalles en la implementación de FIRConfiguration aquí


Edición 3: 2019

Según este problema: https://github.com/firebase/firebase-ios-sdk/issues/2774#issuecomment-482780714

Agregar el argumento -FIRDebugDisabled y limpiar el proyecto funcionó.

El sistema de registro en Firebase

El sistema de registro tiene dos modos: modo predeterminado y modo de depuración. En el modo predeterminado, solo se enviarán al dispositivo los registros con el nivel de registro Aviso, Advertencia y Error. En el modo de depuración, todos los registros se enviarán al dispositivo. Los niveles de registro que usa Firebase son consistentes con los niveles de registro de ASL.

Habilite el modo de depuración pasando el argumento -FIRDebugEnabled a la aplicación. Puede agregar este argumento en el esquema Xcode de la aplicación. Cuando el modo de depuración está habilitado a través de -FIRDebugEnabled, las ejecuciones posteriores de la aplicación también estarán en modo de depuración. Para volver al modo predeterminado, debe deshabilitar explícitamente el modo de depuración con el argumento de la aplicación -FIRDebugDisabled .

También es posible cambiar el nivel de registro predeterminado en el código llamando a setLoggerLevel: en la interfaz FIRConfiguration.

Jorge Casariego
fuente
3
esto no tiene nada que ver con la base de fuego
Jesús Rodríguez
y ocultará sus análisis si desea que se muestren -FIRAnalyticsDebugEnabled
DogCoffee
Esto deshabilitó todos los registros por mí. Como dijiste en el último punto.
R. Mohan
Me ayudó a reducir los mensajes de Firebase que se registraron a pesar de setLoggerLevel(.min)y -FIRDebugDisabled. ¡Gran respuesta!
Kelin
4
Deja de decirle a la gente que desactive todos los registros.
Claus Jørgensen
7
FIRConfiguration.sharedInstance().setLoggerLevel(.min)
FIRApp.configure()

En Swift 4

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

Swift 4 Firebase 4.10

Establezca el nivel de registrador en su AppDelegate.swift

FirebaseConfiguration().setLoggerLevel(FirebaseLoggerLevel.min)

Aquí está el código completo:

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

De forma predeterminada, Firebase Analytics solo registrará 4 líneas INFO en producción + errores / advertencias. Eso debería ser muy poco resultado si las cosas funcionan correctamente. Agregar -noFIRAnalyticsDebugEnabled solo desactivará los registros de nivel DEBUG y ERROR / WARN siempre se registran. Si ve alguna advertencia o error, probablemente deba hacer algo para resolver la causa. Es probable que algunas cosas no funcionen correctamente si se registran advertencias / errores. La aplicación que está configurada correctamente no debe registrar errores / advertencias.

Los mensajes etiquetados con FIRInstanceID / * son registrados por Firebase Notification y los errores / advertencias siempre se registran.

djabi
fuente
3

Como dijo djabi, no puede deshabilitar esos registros si son INFO, ADVERTENCIA o ERROR.

Quiero agregar a la respuesta de Nitin Gohel ya que no puedo comentar: la bandera FirebaseAppDelegateProxyEnabled no es para deshabilitar registros. Si lo apaga, perderá el seguimiento automático de la campaña y deberá agregar los métodos de FIRAnalytics (AppDelegate) para manejar la URL y la actividad del usuario usted mismo.

adbitx
fuente
3

Para agregar a la respuesta de Alex, desde https://firebase.google.com/docs/cloud-messaging/ios/client

FirebaseAppDelegateProxyEnabled es para combinar los métodos del delegado de su aplicación

La API de FCM realiza una combinación de métodos en dos áreas clave: mapear su token de APN con el token de registro de FCM y capturar datos analíticos durante el manejo de devolución de llamada de mensajes descendentes. Los desarrolladores que prefieran no usar swizzling pueden deshabilitarlo agregando la marca FirebaseAppDelegateProxyEnabled en el archivo Info.plist de la aplicación y configurándolo en NO (valor booleano). Las áreas relevantes de las guías proporcionan ejemplos de código, con y sin el método swizzling habilitado.

onmyway133
fuente
1

Creo que está ocurriendo una gran y muy importante confusión.

Al usarlo -FIRDebugDisabled, se desactivará el modo de depuración, que luego sus mediciones se verán afectadas durante las pruebas y el desarrollo .

Para reducir los registros:

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

Sin embargo, hay un error en las versiones 6.18 y 6.20.

Como solución alternativa, puede usar -noFIRAnalyticsDebugEnableduna cosa diferente, esta no desactiva el modo de depuración.

rgkobashi
fuente
primer error creado el 8 de agosto de 2019 y aún no se ha solucionado :( espero que lo solucionen pronto. Hemos estado pensando en cambiarnos a otra herramienta, estos registros son extremadamente spam
rgkobashi