【问题标题】:Verbose logging on AndroidAndroid 上的详细日志记录
【发布时间】:2012-04-05 01:04:28
【问题描述】:

如果您在 Android Dev 上查找日志记录文档,您会看到一个部分显示

在详细程度方面,从少到多的顺序是 ERROR、WARN、INFO、DEBUG、VERBOSE。除非在开发期间,否则永远不应将详细信息编译到应用程序中。调试日志被编译,但在运行时被剥离。始终保留错误、警告和信息日志。

这个简介的第二部分是目前让我感到困惑的部分。这是否意味着

a) 编译器优化器会自动去除所有详细的日志记录(就像专门建议的那样在调试中没有)

b) 我应该在发布之前找到所有 Log.v() 并将其替换为 ""

我意识到最终用户不希望详细日志记录,我完全同意这一点,但我也相信在开发过程中应尽可能多地使用日志。我意识到我理论上可以做一些类似

的事情
if(IS_VERBOOSE_LOGGING_ENABLED) 
{ 
    Log.v("My log message here");
} 

但是这仍然会违反建议(假设它意味着在编译时间之前删除)。

社区的任何澄清将不胜感激。

【问题讨论】:

标签: android optimization architecture logging


【解决方案1】:

最好的办法是配置 proguard 以摆脱发布工件中的所有日志记录。那你就完全不用担心了。

# get rid of all the logging
-assumenosideeffects class android.util.Log {
    public static int v(...);
    public static int d(...);
    public static int w(...);
    public static int i(...);
}

【讨论】:

  • 但请注意,堆栈跟踪中的行号将不匹配。
  • @lzap 好吧,如果您使用 ProGuard,无论是否添加此配置,堆栈跟踪中的行号都不匹配。
  • 如果你从 proguard 运行中保留映射文件,你可以去混淆它......
猜你喜欢
  • 2020-08-18
  • 1970-01-01
  • 2022-11-15
  • 1970-01-01
  • 2017-03-13
  • 2013-03-12
  • 2012-10-08
  • 1970-01-01
  • 2020-08-02
相关资源
最近更新 更多