记录策略

时间:2010-12-02 08:56:23

标签: android logging

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

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

问题是:对于生产版本,我该怎么办?

  1. 只是评论/条带日志声明
  2. 做其他更复杂的事情?就像我以前使用Log4J属性一样
  3. 请分享您的经验。

7 个答案:

答案 0 :(得分:4)

您可以使用混淆工具在构建时删除日志记录语句。有关详细信息,请参阅here

答案 1 :(得分:1)

有一个新项目,可以在android上启用log4j。使用lo4gj over slf4j是可能的。它还为LogCat提供了一个扩展器。查看项目android-logging-log4jlog4j support in android

答案 2 :(得分:1)

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

安装完成后,您必须将所有日志调用更改为LumberJack调用(例如LumberJack.d()而不是Log.d()等。)

标签是可选的,默认设置为" LumberJack"。您可以选择自己设置默认标记。

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

即可
LumberJack.setLogLevel(LogLevel.None);

因此,如果您只想删除所有logcat垃圾邮件日志,则只需设置日志级别过滤器即可。

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

答案 3 :(得分:0)

取决于。如果您希望应用程序经常崩溃,那么请包含其中一个崩溃报告库,但不管您决定做什么,都不要使用Log.d()方法发布它。

答案 4 :(得分:0)

我是这样做的,如果DEBUG为false,编译器将删除所有日志记录:

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

答案 5 :(得分:0)

我没有专门针对Android的经历,但我只是将日志记录留在代码中并关闭log4j属性文件中的日志记录。您甚至可能希望保留一些日志记录,以便您的应用程序在发生崩溃时生成有用的日志。

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

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

答案 6 :(得分:0)

如果您不想在Android发行版中记录某些内容,则可以使用自动生成的BuildConfig。在此处查看更多相关信息:https://developer.android.com/studio/build/gradle-tips.html。您还可以在此问题中阅读更多信息:BuildConfig file in android - Purpose and Possibilities

因此,在您的代码中,您只需编写如下内容:

if (BuildConfig.DEBUG) {
    //your code just for development goes here
}