组件化思想之Log的封装

来源:互联网 发布:战地4淘宝怎么搜 编辑:程序博客网 时间:2024/05/22 23:19

前言

Android中的日志工具类是Log(android.util.Log),这个类中提供了如下5个方法来供我们打印日志

  • Log.v() :用于打印些最为琐碎的,意义最小的日志信息。对应级别verbose,是Android日志里面级别最低的一种

  • Log.d() :用于打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助的,对应级别debug,比verbose高一级

  • Log.i() : 用于打印一些较为重要的数据,这些数据应该是你非常想看到的,可以帮你分析用户行为数据。对应级别info,比debug高一级

  • Log.w() : 用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好去修复一下这些出现警告的地方。对应级别warn,比info高一级

  • Log.e(): 用于打印程序中的错误信息,比如程序进入catch语句当中。当有错误信息打印出来的时候,一般都代表你的程序出现严重的问题,必须尽快修复。对应级别error,比warn高一级。

其实很简单,一共就5个方法,当然每个方法还会有不同的重载,但对你来说不是什么难理解的地方了。

我们现在在HelloWorld项目中试一下系统自带的日志工具好不好用吧

打开HelloWorldActivity,在onCreate()方法中添加一行打印日志的语句,如下所示

protected void onCreate(Bundle savedInstanceState){super.oncreate(savedInstanceState);setContentView(R.layout.hello_world_layout);Log.d("MainActivity","开始执行");}

Log.d()方法传入了两个参数:第一个参数是tag,一般传入当前的类名就好,主要用于打印信息进行过滤;第二个参数是msg,即想要打印的具体内容。
现在可以用Shifit+F10运行HelloWorld这个项目了,或点击顶部工具类的运行按钮,在logcat中我们看到打印信息,如下所示:

10-08 07:30:24.423 1457-2245/com.lijizhi.myapplication D/MainActivity: 开始执行

从中你不仅可以看到打印日志的内容和Tag名,就连程序的包名,打印时间以及应用程序的进程号都可以看到。

那么我们为什么还要自定义Log并对其封装呢?

首先 log是有助于我们调式bug,或者看一些重要的信息,特别是在开发的过程中,难免会产生很多很多的log,但如果开发完了需要发正式的release版本,如果不撤销这些log日志,会多多少少影响着性能,还有就是也会被其他开发人员开到一些敏感的信息。android提供的Log这个类,功能太少了,如果不自己再封装下,很难达到自己的要求,比如你想在debug版本时可以随时看到日志,并且也可以给测试的同事看到,还有个场合就是正式发布的时候屏蔽所有的日志,还有些场景就是希望能看到更具体的这个log信息具体在哪个类中哪个方法中并且还可以看到具体在哪一行,它所在的线程是什么,那么Logger就可以做到。

具体操作步骤

首先建立util包,并在util包内新建一个名为L的Java Class,具体代码如下所示:

package com.lijizhi.myapplication.util;import android.util.Log;/*  项目名 MyApplication  *  包名  com.lijizhi.myapplication.util  *  文件名: L  *  创建者 : LJZ  *  创建时间:2017/10/8 0008 上午 7:41  *  描述    Log的封装*/public class L {    //开关    public static final  boolean DEBUG = true;    //TAG    public static final String TAG = "myapplication";    //五个等级  DIWE    public static void d(String text){        if(DEBUG){            Log.d(TAG,text);        }    }    public static void i(String text){        if(DEBUG){            Log.i(TAG,text);        }    }    public static void w(String text){        if(DEBUG){            Log.w(TAG,text);        }    }    public static void e(String text){        if(DEBUG){            Log.e(TAG,text);        }    }}

那么怎么使用这个封装的Log类,其实很简单,比如我们要打印一条debug级别的日志,只要相应的位置添加下面这一行就好了

 L.d("开始执行");

这时再观察logcat的打印信息如下所示:

10-08 07:52:44.517 2437-2437/com.lijizhi.myapplication D/MainActivity: 开始执行

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微商退货不退款怎么办 微商退货了不退款怎么办 微商退货后不退款怎么办 有赞买东西付款没发货怎么办 赞礼号掉了东西怎么办 万达贷系统维护还不了款怎么办 qq文件发不出去怎么办 1688分销没有传淘宝怎么办 京东的货运代理怎么办 天天练推广期没了怎么办 微信自动建群怎么办 刚刚不小心扫了无痕爆客怎么办 苹果6升级卡死怎么办 随行付换手机了怎么办 融e联账号冻结怎么办 58同城高危账户怎么办 网购迟迟不发货怎么办 优酷不能投屏了怎么办 爱尚街借款不还怎么办 小米商城买东西没收到货怎么办 微信投票地区限制怎么办 微信退款未到账怎么办 微信钱包锁忘了怎么办 xp系统管理员密码忘了怎么办 沃尔沃menu键没反应怎么办 微信转账受限制怎么办 被米虎网骗了手里还有合同怎么办 学校要求上传论文pdf格式怎么办 备份的Wifi密码查看乱码怎么办 u盘密码忘了怎么办 京东会员号被黑怎么办 淘宝企业店铺三证不合一怎么办 淘宝企业店铺营业执照注销了怎么办 不想开淘宝企业店铺了怎么办 id图片跨页排版怎么办 合约机不想要了怎么办? 移动A3手机老卡怎么办 中国移动手机a3很卡怎么办 移动手机a4好卡怎么办 红米手机卡顿反应慢怎么办 红米3s网速慢怎么办