2011-12-06 80 views
3

为什么和什么时候应该使用android Logging?它应该仅用于调试目的吗?在我看来,如果保存在一个生产应用程序中,它会显着减慢它的速度。为什么和什么时候应该使用android日志类?

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

这可能是一个非常愚蠢或业余的问题,但我从来没有理解需要或感到不得不使用它。我可能会错过一些东西。

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

而且 - 我已经知道,记录错误/详细/信息/等是不同的,有的不进行调试时丢弃。请不要重复班级概述中的信息,不要给我解释原因。谢谢!

+1

在Android网站的发布页面上,它表示您应该评论/删除所有日志 - 因此它不会在生产中使用(或至少不应该)。 – Ricky

+1

查看生产电话中没有关闭多少日志记录很有趣。非常非常有趣的消息有时会登录,这些消息总是让我希望我可能不是最糟糕的Android程序员。 –

+0

根本不是一个愚蠢的问题。许多人在他们的代码中使用它(例如,在线教程等),从不提及其意义。 –

回答

3

我同意你的观点,我从来没有真正使用过它。我更喜欢调试超过日志阅读(和单元测试超过调试),试图弄清楚发生了什么,却得到了错误时。

有些人认为在应用程序崩溃并获取异常时记录“更多详细信息”会很有用,但我通常会回复他们,异常本身应该在必要时应用附加的细节,并将它们暴露在getMessage中。因此,LogCat中包含的默认堆栈跟踪足以查看发生了什么。

但无论如何,它总是很高兴有记录的东西的可能性,尽管我还没有发现到目前为止,它真的很有用,你永远不知道什么时候它可能会帮助:)

0

关于我的评论,看到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,并确切知道我的代码在做什么。

+0

在调试过程中遇到的“几个问题”可能并且应该已经解决了:调试通常比通过记录来了解引擎背后发生的事情要有效得多 - 即使有时候很难在多路线程环境。而在理想的世界里,如果你的单元测试覆盖率足够好,你既不需要记录也不需要调试。 – Guillaume

+0

请注意,但请解释一下:“为了知道发生了什么事情,调试通常比记录更有效的方法”,为什么? – Ricky

+0

好吧,出于许多不同的原因:如果你仔细地一步一步地看,你可以看到你的线程究竟跟随哪个路径(使用普通日志记录可能会非常困难),并且当你逐步完成时,你可以详细查看任何变量状态,包括以下依赖关系,或者在运行时评估任何表达式,这对于检查特定实例的状态是非常重要的,等等。 – Guillaume

0

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

通过日志记录(例如在INFO级别),可以添加一些附加信息来跟踪应用程序中的数据。这可以让你发现有什么不对。 因此,它添加了更高级别的概述。

此外,它可以很容易地被禁用,不会显着减慢应用程序的速度(如果是done right),并且可能因此提供另一种途径来查看是否一切正常,缺点很少,有一些优点。 (另请参阅Logging vs. Debugging,尤其是链接@smonff's answer。)

相关问题