Como impedir que o Firebase registre atualizações de status quando o aplicativo for iniciado

98

Sempre que eu inicio o aplicativo FireBase, ele registra o status de vários recursos do Firebase. No momento, isto é o que está sendo registrado:

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

Eu olhei os pods e não encontrei nenhuma declaração de impressão, então de que outra forma eu faria para impedir que eles fossem registrados com o tempo que eu executar o aplicativo?

TekShock
fonte
3
Eu concordo com você. Também estou procurando uma maneira de desativar as mensagens.
Gui Moura
1
Você encontrou um método?
Gilian
Definitivamente, deve haver um caso para desativar as mensagens. Não importa quantos deles são registrados. Não me importo em receber avisos e erros, mas as mensagens iniciais são uma distração, sem dúvida.
Jakub Truhlář

Respostas:

117

Você pode desabilitar o log de depuração com o sinalizador -FIRDebugDisabled.

Você pode adicioná-lo ao seu esquema :

  1. Selecione a barra de ferramentas Esquema
  2. Editar Esquema
  3. Selecione Executar
  4. Clique em Argumentos e adicione -FIRDebugDisabled
Ian Barber
fonte
1
Ah, eu verifiquei com os engenheiros - essas mensagens serão registradas de qualquer maneira. Com a bandeira, é tudo o que você deve ver.
Ian Barber
20
A -noFIRAnalyticsDebugEnabledfoi renomeado para -FIRDebugDisabled. As outras etapas são iguais.
Marat Saytakov
3
Não é muito bom (provavelmente não será adicionado aos repositórios de código, etc. e, portanto, causará código diferente dependendo do método de construção (pense em executar / arquivar)). Por padrão, as compilações devem ter os logs DESLIGADOS ... IMHO 😎
Jonny
1
isso tem o terrível efeito colateral de ativar o modo de depuração para o Firebase Analytics
Hogdotmac
62

Adicione FirebaseConfiguration.shared.setLoggerLevel(.min)antes FirebaseApp.configure()para atingir a quantidade mínima de registro.

func setupFirebase() {
  FirebaseConfiguration.shared.setLoggerLevel(.min)
  FirebaseApp.configure()
}
Raphael Oliveira
fonte
Isso faz o trabalho!
Kyle Goslan
3
O código foi atualizado para FIRConfiguration.sharedInstance (). SetLoggerLevel (.min)
Chrishan
16

Por padrão, o Firebase registra informações, erros e avisos.
Então, você pode definir o nível de logger para o qual você precisa.
Se você definir para .Error, você obterá min log apenas quando ocorrer um erro.

setLoggerLevel antes de FirebaseApp.configure () conforme mostrado abaixo

Em Swift 2.3 e Firebase 4

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

Em Swift 3 e Firebase 4

 FirebaseConfiguration.shared.setLoggerLevel(.min)
 FirebaseApp.configure()
Sujay ONU
fonte
Como posso escrever este código no objetivo c, por favor, diga-me obrigado
Yogesh Patel
15

No meu caso, para ocultar a parte extra do log do console do Firebase, fiz o seguinte:

  1. Navegue até Produto -> Esquema -> Editar Esquema.
  2. Na guia Argumentos na seção Variáveis ​​de ambiente, adicione OS_ACTIVITY_MODE = desativar

insira a descrição da imagem aqui

  • Caso você precise disso, simplesmente desmarque a caixa.
  • Desativar OS_ACTIVITY_MODE às vezes também desativará os registros para todas as exceções

Edição 1 : Como @ jesus-adolfo-rodriguez disse, isso está relacionado ao Xcode. Portanto, se você não quiser o OSLog no console do Xcode, coloque a variável de ambiente OS_ACTIVITY_MODE para “desabilitar” em seu esquema.


Editar 2:

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

Mais detalhes na implementação de FIRConfiguration aqui


Editar 3: 2019

De acordo com este problema: https://github.com/firebase/firebase-ios-sdk/issues/2774#issuecomment-482780714

Adicionar o argumento -FIRDebugDisabled e limpar o projeto resolveu o problema.

O sistema de registro no Firebase

O sistema de registro possui dois modos: modo padrão e modo de depuração. No modo padrão, apenas os registros com nível de registro Aviso, Aviso e Erro serão enviados ao dispositivo. No modo de depuração, todos os logs serão enviados ao dispositivo. Os níveis de registro que o Firebase usa são consistentes com os níveis de registro ASL.

Habilite o modo de depuração passando o argumento -FIRDebugEnabled para o aplicativo. Você pode adicionar este argumento no esquema Xcode do aplicativo. Quando o modo de depuração é habilitado por meio de -FIRDebugEnabled, outras execuções do aplicativo também estarão no modo de depuração. Para retornar ao modo padrão, você deve desabilitar explicitamente o modo de depuração com o argumento do aplicativo -FIRDebugDisabled .

Também é possível alterar o nível de registro padrão no código chamando setLoggerLevel: na interface FIRConfiguration.

Jorge Casariego
fonte
3
isso não tem nada a ver com firebase
Jesus Rodriguez
e ocultará suas análises se desejar que sejam exibidas -FIRAnalyticsDebugEnabled
DogCoffee
Isso desativou todos os logs para mim. Como você disse no último ponto.
R. Mohan
Isso me ajudou a reduzir as mensagens do Firebase que eram registradas, apesar de setLoggerLevel(.min)e -FIRDebugDisabled. Ótima resposta!
kelin
4
Pare de dizer às pessoas para desativar todos os registros.
Claus Jørgensen
7
FIRConfiguration.sharedInstance().setLoggerLevel(.min)
FIRApp.configure()

Em Swift 4

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

Swift 4 Firebase 4.10

Defina o nível de logger em seu AppDelegate.swift

FirebaseConfiguration().setLoggerLevel(FirebaseLoggerLevel.min)

Aqui está o código completo:

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

Por padrão, o Firebase Analytics registrará apenas 4 linhas INFO na produção + erros / avisos. Isso deve ser muito pouco resultado se as coisas funcionarem corretamente. Adicionar -noFIRAnalyticsDebugEnabled desabilitará apenas os logs de nível DEBUG e ERROR / WARN são sempre registrados. Se você vir quaisquer avisos ou erros, provavelmente precisará fazer algo para resolver a causa. Algumas coisas provavelmente não funcionarão corretamente se avisos / erros forem registrados. O aplicativo que está configurado corretamente não deve registrar erros / avisos.

As mensagens marcadas com FIRInstanceID / * são registradas pelo Firebase Notification e os erros / avisos são sempre registrados.

djabi
fonte
3

Como o djabi disse, você não pode desativar esses logs se eles forem INFO, WARNING ou ERROR.

Quero acrescentar algo à resposta de Nitin Gohel, pois não posso comentar: O sinalizador FirebaseAppDelegateProxyEnabled não é para desabilitar logs. Se você desligá-lo, perderá o rastreamento automático da campanha e precisará adicionar os métodos do FIRAnalytics (AppDelegate) para lidar com a URL e a atividade do usuário por conta própria.

adbitx
fonte
3

Para adicionar à resposta de Alex, em https://firebase.google.com/docs/cloud-messaging/ios/client

FirebaseAppDelegateProxyEnabled é para usar os métodos do delegado do seu aplicativo

A API FCM realiza swizzling de método em duas áreas principais: mapeamento do token de APNs para o token de registro do FCM e captura de dados analíticos durante o tratamento de retorno de chamada de mensagem downstream. Os desenvolvedores que preferem não usar o swizzling podem desativá-lo adicionando o sinalizador FirebaseAppDelegateProxyEnabled no arquivo Info.plist do aplicativo e definindo-o como NO (valor booleano). As áreas relevantes dos guias fornecem exemplos de código, com e sem o swizzling de método ativado.

onmyway133
fonte
1

Acho que há uma grande e muito importante confusão acontecendo.

Ao usá- -FIRDebugDisabledlo, ele desabilitará o modo de depuração, o que afetará suas medições durante o teste e o desenvolvimento .

Para reduzir os logs:

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

No entanto, há um bug nas versões 6.18 e 6.20.

Como alternativa, você pode usar o -noFIRAnalyticsDebugEnabledque é diferente, este não desativa o modo de depuração.

rgkobashi
fonte
primeiro bug criado em 8 de agosto de 2019 e sem correção ainda :( espero que eles consertem em breve. Estamos pensando em mudar para outra ferramenta, esses registros são extremamente spam
rgkobashi