【问题标题】:How to stop Firebase from logging status updates when app is launched启动应用程序时如何阻止 Firebase 记录状态更新
【发布时间】:2016-09-15 14:49:22
【问题描述】:

每当我启动 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

我查看了 pod 并没有找到任何打印语句,那么我还要如何阻止这些语句在我运行应用程序时被超时记录?

【问题讨论】:

  • 我同意你的看法。我也在寻找一种禁用消息的方法。
  • 找到方法了吗?
  • 绝对应该有关闭消息的情况。记录其中的数量无关紧要。我不介意收到警告和错误,但毫无疑问,最初的消息会分散注意力。

标签: ios iphone firebase


【解决方案1】:

您可以使用标志 -FIRDebugDisabled 禁用调试日志记录。

您可以将其添加到您的scheme

  1. 选择方案工具栏
  2. 编辑方案
  3. 选择运行
  4. 点击参数并添加-FIRDebugDisabled

【讨论】:

  • 啊,我与工程师签到了——无论如何,这些消息都会被记录下来。不过有了旗帜,这就是您应该看到的全部内容。
  • A -noFIRAnalyticsDebugEnabled 已重命名为 -FIRDebugDisabled。其他步骤相同。
  • 不是很好(这可能不会被添加到代码存储库等中,因此会根据构建方法(想想运行/归档)导致不同的代码)。默认情况下,发布版本应该关闭日志...恕我直言?
  • 这会产生可怕的副作用,即为 Firebase 分析打开调试模式
【解决方案2】:

FirebaseApp.configure() 之前添加FirebaseConfiguration.shared.setLoggerLevel(.min) 以实现最少的日志记录。

func setupFirebase() {
  FirebaseConfiguration.shared.setLoggerLevel(.min)
  FirebaseApp.configure()
}

【讨论】:

  • 这样就行了!
  • 代码已更新为 FIRConfiguration.sharedInstance().setLoggerLevel(.min)
  • 对于 Objective-c 中的任何人:[[FIRConfiguration sharedInstance] setLoggerLevel:FIRLoggerLevelWarning]; [FIRApp configure];
【解决方案3】:

默认情况下,Firebase 会记录信息、错误和警告。
因此,您可以根据需要设置记录器级别。
如果您设置为 .Error,则只有在发生错误时才会获得最小日志。

在FirebaseApp.configure()之前设置LoggerLevel如下图

在 Swift 2.3 和 Firebase 4 中

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

在 Swift 3 和 Firebase 4 中

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

【讨论】:

  • 如何在objective c中编写这段代码,请告诉我谢谢
【解决方案4】:

在我的情况下,为了从 Firebase 隐藏额外的控制台日志块,我执行了以下操作:

  1. 导航到产品 -> 方案 -> 编辑方案。
  2. 在环境变量部分的参数选项卡下添加 OS_ACTIVITY_MODE = disable

  • 以防万一您需要,只需取消选中该框即可。
  • 禁用 OS_ACTIVITY_MODE 有时也会禁用所有异常的日志

编辑1:正如@jesus-adolfo-rodriguez 所说,这与Xcode 有关。因此,如果您不想在 Xcode 控制台上使用 OSLog,请将 OS_ACTIVITY_MODE 环境变量放在您的方案中“禁用”。


编辑2:

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

FIRConfiguration 实现中的更多细节here


编辑 3:2019

根据这个问题: https://github.com/firebase/firebase-ios-sdk/issues/2774#issuecomment-482780714

添加 -FIRDebugDisabled 参数并清理项目就可以了。

The logging system in Firebase

日志系统有两种模式:默认模式和调试模式。在 默认模式,只记录日志级别为 Notice、Warning 和 Error 的日志 发送到设备。在调试模式下,所有日志都将发送到设备。这 Firebase 使用的日志级别与 ASL 日志级别一致。

通过将 -FIRDebugEnabled 参数传递给 应用。您可以在应用程序的 Xcode 中添加此参数 方案。当通过 -FIRDebugEnabled 启用调试模式时,进一步 应用程序的执行也将处于调试模式。为了 返回默认模式,您必须明确禁用调试模式 使用应用程序参数 -FIRDebugDisabled

也可以通过以下方式更改代码中的默认日志记录级别 在 FIRConfiguration 接口调用 setLoggerLevel:。

【讨论】:

  • 这与firebase无关
  • 如果您希望显示分析,将隐藏您的分析 -FIRAnalyticsDebugEnabled
  • 这为我禁用了所有日志。正如你在最后一点所说的。
  • 它帮助我减少了来自 Firebase 的消息,尽管有 setLoggerLevel(.min)-FIRDebugDisabled。很好的答案!
  • 停止告诉人们禁用所有日志记录。
【解决方案5】:

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
}

【讨论】:

  • 截至 2020 年 10 月,这是摆脱 Firebase 日志的唯一答案,但我自己的日志却没有。有助于分析应用启动时发生的情况。
【解决方案6】:
FIRConfiguration.sharedInstance().setLoggerLevel(.min)
FIRApp.configure()

在 Swift 4 中

【讨论】:

  • FirebaseConfiguration.shared.setLoggerLevel(.min) 在 FB 5.14 中
【解决方案7】:

默认情况下,Firebase Analytics 只会在生产环境中记录 4 条 INFO 行 + 错误/警告。如果一切正常,那应该是很少的输出。添加 -noFIRAnalyticsDebugEnabled 只会禁用 DEBUG 级别的日志,并且始终记录 ERROR/WARN。如果您看到任何警告或错误,您可能需要采取措施解决问题。如果记录了警告/错误,有些事情可能无法正常工作。正确设置的应用不应记录错误/警告。

带有 FIRInstanceID/* 标记的消息由 Firebase 通知记录,并且始终记录错误/警告。

【讨论】:

    【解决方案8】:

    正如 djabi 所说,如果这些日志是 INFO、WARNING 或 ERROR,则无法禁用它们。

    我想补充 Nitin Gohel 的答案,因为我无法发表评论:标志 FirebaseAppDelegateProxyEnabled 不是用于禁用日志。如果您关闭它,您将失去自动活动跟踪,您需要添加 FIRAnalytics(AppDelegate) 中的方法来自己处理 URL 和用户活动。

    【讨论】:

      【解决方案9】:

      添加到亚历克斯的答案,来自https://firebase.google.com/docs/cloud-messaging/ios/client

      FirebaseAppDelegateProxyEnabled 用于调配您的应用委托的方法

      FCM API 在两个关键领域执行方法调配:将您的 APNs 令牌映射到 FCM 注册令牌,以及在下游消息回调处理期间捕获分析数据。不喜欢使用 swizzling 的开发人员可以通过在应用的 Info.plist 文件中添加标志 FirebaseAppDelegateProxyEnabled 并将其设置为 NO(布尔值)来禁用它。指南的相关区域提供了代码示例,包括启用和不启用方法混合的情况。

      【讨论】:

        【解决方案10】:

        我认为正在发生一个很大且非常重要的困惑。

        通过使用-FIRDebugDisabled,它将禁用调试模式,然后您的measurements will be affected during testing and development

        目前有no way可以同时启用调试模式和禁用日志。所以FirebaseConfiguration.shared.setLoggerLevel(.min) 基本上只能在非调试模式下工作。

        您可以使用-noFIRAnalyticsDebugEnabled 作为解决方法,它仅适用于Xcode console logging,这个不会禁用您的调试模式。

        【讨论】:

          猜你喜欢
          • 2020-12-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-01-30
          相关资源
          最近更新 更多