【问题标题】:Why and when should the android Log class be used?为什么以及何时应该使用 android Log 类?
【发布时间】:2011-12-06 10:41:30
【问题描述】:

为什么以及何时应该使用 android Logging?它应该仅用于调试目的吗?在我看来,如果保留在生产应用程序中,它会大大减慢它。

我的问题的一个关键部分是什么时候应该使用它......在什么情况下我应该需要它?是否有任何“最佳实践”来使用它?

这可能是一个非常愚蠢或业余的问题,但我从不理解需要或觉得有必要使用它。我可能遗漏了什么。

http://developer.android.com/reference/android/util/Log.html

另外 - 我已经知道错误/详细/信息/等的日志记录是不同的,有些在不调试时会被丢弃。请不要在没有解释原因的情况下重复课程概述中的信息。谢谢!

【问题讨论】:

  • 在 Android 网站的发布页面上,它说您应该评论/删除所有日志记录 - 所以它不会(或至少不应该)在生产中使用。
  • 看到生产手机中没有关闭多少日志记录很有趣。有时会登录非常非常有趣的消息,这些消息总是让我希望我可能不是有史以来最糟糕的 Android 程序员。
  • 根本不是一个愚蠢的问题。许多人在他们的代码中使用它(例如在线教程等),却从未提及它的重要性。

标签: android logging


【解决方案1】:

我同意你的观点,我也从未真正使用过它。当我试图弄清楚什么是发生并出现错误。

有些人认为,当您的应用程序崩溃并出现异常时,记录“附加详细信息”可能很有用,但我通常会回复他们说,异常本身应该在必要时保存这些附加详细信息,并在其 getMessage 中公开它们。因此,LogCat 中包含的默认堆栈跟踪足以了解发生了什么。

但无论如何,能够记录一些东西总是很好的,即使到目前为止我还没有发现它真的很有用,你永远不知道它什么时候会有所帮助:)

【讨论】:

    【解决方案2】:

    关于我的评论,请参阅Preparing for Release。 (显示日志应该在发布之前删除,因此不用于生产)。

    Turn off logging and debugging
    
    Make sure you deactivate logging and disable the debugging option before you build your
    application for release. You can deactivate logging by removing calls to Log methods
    in your source files.
    

    前几天我使用了日志记录,我启动了另一个线程来做一些工作,但我需要检查线程中生成的一些数据,而不记录或显示Toast,我怎样才能得到这些值?我之前尝试过在 Eclipse 中调试/单步调试代码,但遇到了几个问题。

    通过日志记录,我可以记录每个值、查看 logcat 并准确了解我的代码在做什么。

    【讨论】:

    • 您在调试时遇到的“几个问题”可以而且应该已经得到解决:调试通常是一种比记录日志更有效的方式来了解引擎盖下发生了什么——即使它有时是在多线程环境中正确获取它的痛苦。在理想情况下,如果您的单元测试覆盖率足够好,您既不需要记录也不需要调试。
    • 点了,但请解释一下:“调试通常是一种比记录更有效的方式来了解引擎盖下发生了什么”,为什么会这样?
    • 嗯,有很多不同的原因:如果你一步一步仔细地走,你可以准确地看到你的线程正在遵循哪条路径(使用普通日志可能很难),当你逐步完成时,然后,您可以查看任何变量状态的详细信息,包括以下依赖项,或在运行时评估任何表达式,这对于检查特定实例的状态等非常有用。
    • 另外一个你可以拥有的好东西是条件断点:例如,你可以在调试模式下运行并说“只要抛出 RuntimeException 就停止”,你会看到它被抛出的位置,变量的状态等。
    【解决方案3】:

    通常只有在知道有问题时才进行调试。 (当你知道时,你可能会编写额外的测试用例。)

    通过日志记录(例如,在 INFO 级别),您可以添加一些额外的信息来跟踪应用程序中的数据。这可以让您发现 出了点问题。 因此,它添加了更高级别的概览。

    此外,它可以很容易地被禁用,不会显着降低应用程序的速度(如果done right),因此可能会提供另一种方法来查看是否一切正常,几乎没有缺点和一些优点。 (另见Logging vs. Debugging,尤其是@smonff's answer中的链接。)

    【讨论】:

      猜你喜欢
      • 2011-06-07
      • 2010-12-07
      • 1970-01-01
      • 2014-05-22
      • 1970-01-01
      • 2023-03-08
      • 2013-01-29
      • 2010-12-10
      相关资源
      最近更新 更多