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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_22078107/article/details/53513193

在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);//支持XML
Logger.log(DEBUG, "tag", "message", throwable);






猜你喜欢

转载自blog.csdn.net/qq_22078107/article/details/53513193
今日推荐