LogUtils

package com.itheima.googleplay_8.utils;

import java.util.List;

import android.text.TextUtils;
import android.util.Log;

import com.itheima.googleplay_8.conf.Constants;

/**
 * @author itheima
 * @time     2015-6-23 上午11:33:49
 * @des       日志级别是LEVEL_ALL显示所有信息,包括System.out.println信息
 * @des  日志级别是LEVEL_OFF关闭所有信息,包括System.out.println信息
 * @updateAuthor TODO
 * @updateTime TODO
 * @updateDes TODO
 */
public class LogUtils {
    /** 日志输出时的TAG */
    private static String mTag = "GooglePlay";
    /** 日志输出级别NONE */
    public static final int LEVEL_OFF = 0;
    /** 日志输出级别NONE */
    public static final int LEVEL_ALL = 7;

    /** 日志输出级别V */
    public static final int LEVEL_VERBOSE = 1;
    /** 日志输出级别D */
    public static final int LEVEL_DEBUG = 2;
    /** 日志输出级别I */
    public static final int LEVEL_INFO = 3;
    /** 日志输出级别W */
    public static final int LEVEL_WARN = 4;
    /** 日志输出级别E */
    public static final int LEVEL_ERROR = 5;
    /** 日志输出级别S,自定义定义的一个级别 */
    public static final int LEVEL_SYSTEM = 6;

    /** 是否允许输出log */
    private static int mDebuggable = Constants.DEBUGLEVEL;

    /** 用于记时的变量 */
    private static long mTimestamp = 0;
    /** 写文件的锁对象 */
    private static final Object mLogLock = new Object();

    /**---------------日志输出,已固定TAG  begin---------------**/
    /** 以级别为 d 的形式输出LOG */
    public static void v(String msg) {
        if (mDebuggable >= LEVEL_VERBOSE) {
            Log.v(mTag, msg);
        }
    }

    /** 以级别为 d 的形式输出LOG */
    public static void d(String msg) {
        if (mDebuggable >= LEVEL_DEBUG) {
            Log.d(mTag, msg);
        }
    }

    /** 以级别为 i 的形式输出LOG */
    public static void i(String msg) {
        if (mDebuggable >= LEVEL_INFO) {
            Log.i(mTag, msg);
        }
    }

    /** 以级别为 w 的形式输出LOG */
    public static void w(String msg) {
        if (mDebuggable >= LEVEL_WARN) {
            Log.w(mTag, msg);
        }
    }

    /** 以级别为 w 的形式输出Throwable */
    public static void w(Throwable tr) {
        if (mDebuggable >= LEVEL_WARN) {
            Log.w(mTag, "", tr);
        }
    }

    /** 以级别为 w 的形式输出LOG信息和Throwable */
    public static void w(String msg, Throwable tr) {
        if (mDebuggable >= LEVEL_WARN && null != msg) {
            Log.w(mTag, msg, tr);
        }
    }

    /** 以级别为 e 的形式输出LOG */
    public static void e(String msg) {
        if (mDebuggable >= LEVEL_ERROR) {
            Log.e(mTag, msg);
        }
    }

    /** 以级别为 s 的形式输出LOG,主要是为了System.out.println,稍微格式化了一下 */
    public static void sf(String msg) {
        if (mDebuggable >= LEVEL_ERROR) {
            System.out.println("----------" + msg + "----------");
        }
    }

    /** 以级别为 s 的形式输出LOG,主要是为了System.out.println */
    public static void s(String msg) {
        if (mDebuggable >= LEVEL_ERROR) {
            System.out.println(msg);
        }
    }

    /** 以级别为 e 的形式输出Throwable */
    public static void e(Throwable tr) {
        if (mDebuggable >= LEVEL_ERROR) {
            Log.e(mTag, "", tr);
        }
    }

    /** 以级别为 e 的形式输出LOG信息和Throwable */
    public static void e(String msg, Throwable tr) {
        if (mDebuggable >= LEVEL_ERROR && null != msg) {
            Log.e(mTag, msg, tr);
        }
    }

    /**---------------日志输出,已固定TAG  end---------------**/

    /**---------------日志输出,未固定TAG  begin---------------**/
    /** 以级别为 d 的形式输出LOG */
    public static void v(String tag, String msg) {
        if (mDebuggable >= LEVEL_VERBOSE) {
            Log.v(tag, msg);
        }
    }

    /** 以级别为 d 的形式输出LOG */
    public static void d(String tag, String msg) {
        if (mDebuggable >= LEVEL_DEBUG) {
            Log.d(tag, msg);
        }
    }

    /** 以级别为 i 的形式输出LOG */
    public static void i(String tag, String msg) {
        if (mDebuggable >= LEVEL_INFO) {
            Log.i(tag, msg);
        }
    }

    /** 以级别为 w 的形式输出LOG */
    public static void w(String tag, String msg) {
        if (mDebuggable >= LEVEL_WARN) {
            Log.w(tag, msg);
        }
    }

    /** 以级别为 e 的形式输出LOG */
    public static void e(String tag, String msg) {
        if (mDebuggable >= LEVEL_ERROR) {
            Log.e(tag, msg);
        }
    }

    /**---------------日志输出,未固定TAG  end---------------**/

    /**
     * 把Log存储到文件中
     *
     * @param log
     *            需要存储的日志
     * @param path
     *            存储路径
     */
    public static void log2File(String log, String path) {
        log2File(log, path, true);
    }

    public static void log2File(String log, String path, boolean append) {
        synchronized (mLogLock) {
            FileUtils.writeFile(log + "\r\n", path, append);
        }
    }

    /**
     * 以级别为 e 的形式输出msg信息,附带时间戳,用于输出一个时间段起始点
     *
     * @param msg
     *            需要输出的msg
     */
    public static void msgStartTime(String msg) {
        mTimestamp = System.currentTimeMillis();
        if (!TextUtils.isEmpty(msg)) {
            e("[Started:" + mTimestamp + "]" + msg);
        }
    }

    /** 以级别为 e 的形式输出msg信息,附带时间戳,用于输出一个时间段结束点* @param msg 需要输出的msg */
    public static void elapsed(String msg) {
        long currentTime = System.currentTimeMillis();
        long elapsedTime = currentTime - mTimestamp;
        mTimestamp = currentTime;
        e("[Elapsed:" + elapsedTime + "]" + msg);
    }

    public static <T> void printList(List<T> list) {
        if (list == null || list.size() < 1) {
            return;
        }
        int size = list.size();
        i("---begin---");
        for (int i = 0; i < size; i++) {
            i(i + ":" + list.get(i).toString());
        }
        i("---end---");
    }

    public static <T> void printArray(T[] array) {
        if (array == null || array.length < 1) {
            return;
        }
        int length = array.length;
        i("---begin---");
        for (int i = 0; i < length; i++) {
            i(i + ":" + array[i].toString());
        }
        i("---end---");
    }
}
时间: 2024-10-13 00:27:53

LogUtils的相关文章

对于Android系统Log输出日志的封装LogUtils

MainActivity如下: package cc.cn.logutil; import android.os.Bundle; import android.app.Activity; /** * Demo描述: * 对于Android系统Log输出日志的封装LogUtils * 1 可修改LogUtils中的LEVEL值觉得哪些级别的日志可以输出. * 所以方便选择性输出日志或者屏蔽日志输出 * 2 输出的日志除了本想输出的信息外还包含了该日志输出时所属 * 的线程,类,方法名,已经在该方法

LogUtils日志管理工具

public class LogUtils { 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

LogUtils.java

1 package com.xdsjs.save.utils; 2 3 /** 4 * 日志相关管理类 5 * Created by xdsjs on 2015/10/13. 6 */ 7 8 import android.util.Log; 9 10 public class LogUtils { 11 12 private LogUtils() { 13 /* cannot be instantiated */ 14 throw new UnsupportedOperationExcepti

Android日志打印类LogUtils,能够定位到类名,方法名以及出现错误的行数并保存日志文件

关注finddreams,一起分享,一起进步!http://blog.csdn.net/finddreams/article/details/45569089 在开发中,我们常常用打印log的方式来调试我们的应用.在Java中我们常常使用方法System.out.println()来在控制台打印日志,以便我们的调试.Android中有一个专门的类Log来实现在Android系统下日志的打印,更加方便我们定位程序出现问题的地方. 但是Android官方提供的Log类在实际项目使用中,也不是非常方便

自定义logutils

//log管理类,开发阶段  level设为verbose,记录全部数据.//上线后,将level设置为nothing,屏蔽全部数据//app维修,将level再次设置为level,便于维修 public class LogUtils { public final static int verbose = 1; public static final int debug = 2; public static final int info = 3; public static final int

Android LogUtils打印日志工具类

LogUtils打印日志工具类 这是一个从XUtils3中摘抄出来的打印日志工具类.这个类打印日志比较详细,可以打印类名.方法名.isDebug为打印日志开关,初始化的时候可以使用LogUtils.isDebug(boolean b)来控制开关状态. public class LogUtils { public static String customTagPrefix = "x_log"; private static boolean isDebug = true; private

Android日志打印类LogUtils,能够定位到类名

http://www.miaoo.me/i/%e6%b5%8e%e5%8d%97%e6%89%be%e5%b0%8f%e5%a7%90%e6%8c%89%e6%91%a9 http://www.miaoo.me/i/%e9%83%91%e5%b7%9e%e6%89%be%e5%b0%8f%e5%a7%90%e6%8c%89%e6%91%a9 http://www.miaoo.me/i/%e6%ad%a6%e6%b1%89%e6%89%be%e5%b0%8f%e5%a7%90%e6%8c%89%e

Android 最火开发框架 xUtils

xUtils简介 xUtils3 api变化较多, 已转至 https://github.com/wyouflf/xUtils3 xUtils 2.x对Android 6.0兼容不是很好, 请尽快升级至xUtils3. xUtils 包含了很多实用的android工具. xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响... xUitls 最低兼容android 2.2 (api level 8) 目前xUtils主

ListView分栏--制作分栏音乐列表

之前我遇到过这样的需求,要求在ListView中按时间对数据分栏,当时的做法是在每个ListView的item中加入时间栏的布局,然后在代码中控制时间栏 的显示与隐藏. 但其实重写Adapter两个方法后就可以完成这个任务,当ListView中带有不同布局的时候,可以根据itemType来加载不同的布局. int getItemViewType(int position) 返回指定position的itemView的viewType,用于加载不同布局.此方法必须返回0到getViewTypeCo