Android 编程技巧之 ----- 自定义 Log 工具


在学Java这门语言的时候,很多人喜欢使用System.out.print() 函数来打印一些变量值用于简单的调试工作,而进入Android 领域后,更多的是使用 Android 提供的 Log 工具来进行一些简单的调试工作 ( Log 比 System.out.print() 更加好用,而且加入了日志过滤机制,更便于在海量日志中找到自己想要的信息,推荐) 

然而,当我们开发一个庞大的软件系统的时候,难免会一步一阶段地进行 Log 测试打印到后台调试,但是总会有懒惰的程序员忘记注释掉或者清理掉这些痕迹。久而久之,Log 的打印日志的代码会积攒得越来越多,到软件开发成熟准备发布上市的时候,就会遇到一个头疼的问题:这么海量的代码中存在如此多的 Log 代码,这对软件的性能是会产生一定影响的,同时也有可能泄漏机密数据,有没有什么简单的办法一次性解决这个问题呢? 

其实我们可以自定义一个 Log 工具类,通过一个公共静态变量来控制日志的打印,并且还是自由控制哪一类别可以打印日志哪一类别禁止打印日志。


废话不多说,直接上代码:

public class LogUtil {
    public static final int VERBOSE = 1;
    public static final int DEBUG = 2;
    public static final int INFO = 3;
    public static final int WARN = 4;
    public static final int ERROR = 5;
    public static final int NOTHING = 6;
    public static final int LEVEL = VERBOSE;


    public static void v(String tag, String msg) {
        if (LEVEL <= VERBOSE) {
            Log.v(tag, msg);
        }
    }

    public static void d(String tag, String msg) {
        if (LEVEL <= DEBUG) {
            Log.d(tag, msg);
        }
    }

    public static void i(String tag, String msg) {
        if (LEVEL <= INFO) {
            Log.i(tag, msg);
        }
    }

    public static void w(String tag, String msg) {
        if (LEVEL <= WARN) {
            Log.w(tag, msg);
        }
    }

    public static void e(String tag, String msg) {
        if (LEVEL <= ERROR) {
            Log.e(tag, msg);
        }
    }

}

如以上代码所示,我们定义了 6个日志常量1个LEVEL级别常量 (初始化为1,即VERBOSE级别),6个常量分别代表VERBOSE、DEBUG、INFO、WARN、ERROR、NOTHING,前五个对应于 Log 日志打印的级别,NOTHING 表示当级别为此值时,日志所有级别都不往后台输出日志结果。

然后重新自定义了日志的五个级别的打印函数 (通过比较LEVEL与当前用到的日志函数的级别来判定是否执行 Log 的原生函数),并根据当前LEVEL来自由控制打印哪些级别的日志。

如此,以后在我们的项目中就可以通过调用LogUtil.d()、LogUtil.v()等函数来打印日志了,而当我们想要控制日志输出级别 (改变LEVEL值)或者屏蔽掉所有日志级别(设置LEVEL = NOTHING)时,就可以到该类中来设置LEVEL的值,以此达到自由控制日志打印的目的。


谢谢阅读,共勉!



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值