我即将完成我的Android应用程序。最后我发现我一直在使用一堆日志语句,如:
Log.d(TAG, "Blah-blah");
问题是:对于生产版本,我该怎么办?
请分享您的经验。
答案 0 :(得分:4)
您可以使用混淆工具在构建时删除日志记录语句。有关详细信息,请参阅here。
答案 1 :(得分:1)
有一个新项目,可以在android上启用log4j。使用lo4gj over slf4j是可能的。它还为LogCat提供了一个扩展器。查看项目android-logging-log4j或log4j 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
}