Android中日志打印 Log的使用

Log等级划分

Log.v("Tag","Msg");//Verbose  观察值,Verbose是冗长、啰嗦的意思,任何消息都会输出
Log.d("Tag","Msg");//Debug  调试
Log.i("Tag","Msg");//Info  信息,为一般提示性的消息
Log.w("Tag","Msg");//Warn  可能会出问题,一般用于系统提示开发者需要优化android代码等场景
Log.e("Tag","Msg");//Error  崩溃信息,一般用于输出异常和报错信息

Android Studio 中 Logcat 观察打印日志,可以筛选级别,如果选择 Verbose 可以查看所有,如果选择 Debug,Debug以上的Verbose级别不能查看,Debug和以下级别可以查看,依次类推

这里写图片描述

右侧输入框可以通过第一个参数Tag来筛选日志信息

Log使用规范

1、在app中,一般不允许使用 VERBOSE 级别的 log,对于 INFO、WARN 级别的 log,允许极少量打印重要信息。这是工作中的要求,系统源码中其实对这三个等级用得也不少,例如,系统打印一般 Exception 信息时,就是用的 WARN 级别 log

2、只有在出现极严重错误的时候,才允许使用 ERROR 级别,一般的信息要是用 DEBUG 级别(在后面讲 Log.isLoggable() 的时候,会讲到用 DEBUG 级别的好处)。当系统报 Fatal Exception 的时候,就是用的 ERROR 级别的 log

3、用户的隐私信息禁止打印,比如:IMEI、手机号、密码、银行卡号等。在国外,一些法律也对Log内容做了严格的要求

4、Log中不要打印太多具体实现的细节,这样会导致通过 log 就能猜到架构的设计和代码的实现

5、Log中不能暴露核心算法或机制细节,比如核心算法相关信息、应用和框架间函数的调用流程等

6、禁止在循环打印log。在循环条件、频繁操作、频繁调用的接口、ACTION_MOVE事件、重复打印等地方,一定要控制好 log 的使用。在单位时间内,不同性质的应用对 log 的数目有一定的要求,对每条 log 的大小也有一定的限制。因为大量或者频繁的 log,对 app 的性能有一定的影响。即便是有 log 开关控制日志的输出与否,字符串的拼接也是会耗掉一些性能和资源的

7、打印捕捉到的异常堆栈必须谨慎,如不需要打印堆栈就能定位问题,就尽量不要打印堆栈,若确实需要堆栈,在同一堆栈,尽量控制打印频度

8、对于 Android 源码中自带的 log,尽量不要修改。在Event Log中,就严禁修改源码自带的log

9、Log 中的 TAG,一般以所划分的功能模块命名,log 信息也最好用类名,方法名拼接为前缀。这样做的目的就是在查看 log 的时候,方便定位,对分析问题很有帮助

上述不仅包含使用规范,也包含了部分log使用小技巧。这些规范中有些会根据不同公司,不同严格程度而有所不同,而有些则需要统一遵守其规范的,读者可以根据具体情况斟酌。

Android Studio中log使用

Logcat中选择筛选条件

在这里插入图片描述
最后一项,Show only selected application表示只显示当前选中程序的日志,也就是第二项选中的app 进程
Firebase是Google 提供的一个开发者工具和基础架构平台,先不管
Nofilter相当于没有过滤器,会把所有日志显示出来
Edit Filter Configuration可以自定义过滤器,我们来试一下,点击 Edit Filter Configuration,给过滤器起名 data,让它对名为 data 的 tag 过虑
在这里插入图片描述
然后你会发现多了个过滤器
在这里插入图片描述

Log信息颜色设置

为了便于查看不同等级的 log,Android Studio 对不同等级的 log 信息设置了不同的颜色。设置路径为:File > Settings > Editor > Colors Scheme > Android Logcat。或者直接搜索 log 即可找到,如下截图所示:
在这里插入图片描述
我设置的色值如下

Assert #8F0005
Verbose #000000
Debug #0070BB
Info #48BB31
Warning #BBBB23
Error #FF0006

当然颜色可以自己随便设置,但是一般遵守约定俗称的规定,比如,ERROR 级别的 log,就往往被设置为红色

Log信息说明

在这里插入图片描述

写一份便于使用的Log辅助类

public class Logger {

    //设为false关闭日志
    private static final boolean LOG_ENABLE = true;

    public static void i(String tag, String msg){
        if (LOG_ENABLE){
            Log.i(tag, msg);
        }
    }
    public static void v(String tag, String msg){
        if (LOG_ENABLE){
            Log.v(tag, msg);
        }
    }
    public static void d(String tag, String msg){
        if (LOG_ENABLE){
            Log.d(tag, msg);
        }
    }
    public static void w(String tag, String msg){
        if (LOG_ENABLE){
            Log.w(tag, msg);
        }
    }
    public static void e(String tag, String msg){
        if (LOG_ENABLE){
            Log.e(tag, msg);
        }
    }

}

原文

  • 18
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值