Android Log 打印

Android Log 打印

很多开发者喜欢在应用里封装一个公共的 log 工具类,使用统一的 log tag 输出日志,大一统的方式,看似方便,其实还是有不少问题的。

  • 统一封装的 log 工具类一般内部有 DEBUG 判断,外层调用打印 log 前不会有 DEBUG 判断,会增加每次 new String,增加 gc
  • 统一 log tag 后,查看 log 时,会只搜索当前 tag,任何一个应用都是依附在系统上的,这样的搜索方式忽略了系统给你打印的 log,造成有些问题貌似毫无线索,其实系统已经打印出提示了
  • 没有 DEBUG 判断,自然无法在 release 版本的时候,通过 proguard 优化掉这些 log 了,给应用安全留下隐患

对于 log 的一些思考,尝试以下方式,不合理之处,轻拍。

  • 所有的 log tag 使用统一的前缀,前缀 2-3 个字符
  • 应用内不同的模块功能使用不同的 tag,不一定拘泥于不同的类使用不同的 tag
  • 打印 log 前都增加 DEBUG 判断

使用方式:

  • 分析 bug 的时候,分析可能模块的问题,找到对应模块的 tag,如果忘记 tag 或者不是很方便快速找到对应的 tag,则搜索前缀。
  • 对于不是一个模块的问题,需要联合起来看的问题,搜索前缀找到对应的 pid 后,查找整个 pid 下所有的 log。
  • 对于需要查看跨启动的 bug,会相对麻烦点,只搜索前缀会有较多无用信息,pid 又不是同一个,可以使用 notepad ++ 的正则搜索功能,搜索多个 pid,当然这种情况比较少,有相应的策略应对就好