2010-12-02 124 views
5

即将完成我的Android应用程序。最后我发现我一直在使用一堆日志语句,例如:日志记录策略

Log.d(TAG, "Blah-blah"); 

问题是:对于产品发布,我该怎么处理它们?

  1. 只是评论/条日志报表
  2. 做别的事情更复杂?就像我以前用Log4J属性做的那样

请分享你的经验。

回答

0

我不喜欢这样,使编译器中删除所有记录,如果DEBUG是假的:

if (Constant.DEBUG) Log.d(TAG, "mein gott, state is roflcopter"); 
+1

这种方法并不是真的错,如果你问我,因为它膨胀了你的代码,这是最好的做法。 – 2010-12-02 09:06:34

4

您可以使用混淆工具在构建时删除日志语句。详情请参阅here

+0

OK,我会调查选项。无论如何,有没有像Log4J中的属性的可能性? – barmaley 2010-12-02 13:52:38

+0

据我所知,所有的信息都被记录下来。然后,日志的查看者可以选择要显示哪些消息。您只需编辑一个属性即可禁用调试消息进入日志。 – kgiannakakis 2010-12-02 14:15:50

0

取决于。如果您希望应用程序经常崩溃,那么包含崩溃报告库之一,但无论您决定如何执行,只是不要使用Log.d()方法释放它。

0

我没有在Android上体验特别,但我只希望留下记录staements代码和转关闭log4j属性文件中的日志记录。您甚至可能希望打开一些日志记录,以便在发生崩溃时您的应用程序将生成有用的日志。

如果您担心日志语句生成过于计算密集型(例如,在大集合上调用toString),那么您可以使用此模式。

if (Log.isDebugEnabled()) { 
    Log.Debug(bigCollection.toString()); 
} 
1

我已经为此特定目的创建了一个库。它可以在这里找到 - LumberJack。您可以使用Jitpack和Gradle安装它(请检查README.md)。

安装后,你就必须改变所有登录调用樵夫呼叫(例如,LumberJack.d()代替Log.d()等)

标签是可选的,默认设置为“伐木工人”。您可以选择自己设置默认标签。

您可以随时使用LumberJack.setLogLevel()方法更改过滤。要删除所有日志,可以将LogLevel设置为LogLevel.None

LumberJack.setLogLevel(LogLevel.None); 

所以,如果你只是想删除所有logcat垃圾邮件日志,你只需要设置日志级别过滤器。

(可选)您可以选择以相同的过滤机制登录到文本文件而不是logcat。