Android开发基础 -- Log日志 解释 和 封装

来源:互联网 发布:国家网络应急中心笔试 编辑:程序博客网 时间:2024/06/05 18:15

在Android开发中,日志打印是一项必不可少的操作,我们通过分析打印的日志可以分析程序的运行数据和情况。

在程序中输出日志, 使用 android.util.Log 类. 
该类提供了若干静态方法,常用的方法有以下5个:

Log.v(String tag, String msg); 
Log.d(String tag, String msg); 
Log.i(String tag, String msg); 
Log.w(String tag, String msg); 
Log.e(String tag, String msg);

根据首字母对应等级有 Verbose,DebugInfoWarningError

1、Log.v 的调试颜色为黑色的,任何消息都会输出,这里的v代表verbose冗长的,啰唆的意思,平时使用就是Log.v("","");

2、Log.d 的输出颜色是蓝色的,仅输出debug调试的意思,但他会输出上层的信息,过滤起来可以通过DDMS的Logcat标签来选择.

3、Log.i 的输出为绿色,一般提示性的消息information,它不会输出Log.v和Log.d的信息,但会显示i、w和e的信息

4、Log.w 的意思为橙色,可以看作为warning警告,一般需要我们注意优化Android代码,同时选择它后还会输出Log.e的信息。

5、Log.e 红色,可以想到error错误,这里仅显示红色的错误信息,这些错误就需要我们认真的分析,查看栈的信息了。


tag 是一个标识,可以是任意字符串,通常可以使用类名类名+方法名, 主要是用来在查看日志时提供一个筛选条件. 如:
   // 在MainActivity类中private static final String LOGTAG = "MainActivity";


注意:Info、Warn、Error这三个等级的Log的警示作用依次提高,需要一直保留。这些信息在系统异常时能提供有价值的分析线索


当然,很多初学者开始时喜欢用 System.out.println 输出;过在真正的项目开发中,是极度不建议使用System.out.println()方法的!如果你在公司的项目中经常使用这个方法,就很有可能要挨骂了。这是标准的Java输出方法,这里进行列举,目的是为了提醒大家不用

不建议用的原因这个就太多了,比如日志打印不可控制、打印时间无法确定、不能添加过滤器、日志没有级别区分…


注意: 在版本发布的时候,要取消所有log,而不关闭log的风险包括,你打印的东西太多 和 打印的东西有可能空指针异常之类的

所以,如果一个个的删除log就太苦逼了,

最简单的方法就是,你封装一下log,改一下开关就能关闭所有的log。

这里,写下简单日志封装类:

/** * log日志封装 */public final class CLog {    /**     * 是否要输出日志,把这里改成 “true”或“false”即可     */    public static final boolean DEBUG = true;     private CLog() {    }     public static void d(String tag, String desc) {        if (DEBUG)            Log.d(tag, desc);    }         public static void d(String tag, String desc, Throwable tr) {        if (DEBUG)            Log.d(tag, desc, tr);    }     public static void v(String tag, String desc) {        if (DEBUG)            Log.v(tag, desc);    }    public static void v(String tag, String desc, Throwable tr) {        if (DEBUG)            Log.v(tag, desc);    }     public static void w(String tag, String desc) {        if (DEBUG)            Log.w(tag, desc);    }     public static void w(String tag, Throwable ioe) {        if (DEBUG)            Log.w(tag, ioe);    }     public static void w(String tag, String desc, Throwable e) {        if (DEBUG)            Log.w(tag, desc, e);    }     public static void i(String tag, String desc) {        if (DEBUG)            Log.i(tag, desc);    }         public static void i(String tag, String desc, Throwable tr) {        if (DEBUG)            Log.i(tag, desc, tr);    }     public static void e(String tag, String desc) {        if (DEBUG)            Log.e(tag, desc);    }         public static void e(String tag, String desc, Throwable tr) {        if (DEBUG)            Log.e(tag, desc, tr);    }}







另外推荐一个好用的第三方开源日志库logger,详细介绍请看下面这篇文章:   


一个简单、漂亮、功能强大的Android日志程序:logger

logger项目主页:http://www.open-open.com/lib/view/home/1427166371418

logger支持下面输出:

Logger.d("hello");Logger.e("hello");Logger.w("hello");Logger.v("hello");Logger.wtf("hello");Logger.json(JSON_CONTENT);//支持了Json哦Logger.xml(XML_CONTENT);//支持XMLLogger.log(DEBUG, "tag", "message", throwable);






0 0