package com.lqr.wechat.util;
import android.text.TextUtils;
import android.util.Log;
import com.lqr.wechat.app.AppConst;
import java.util.List;
/**
* @创建者 CSDN_LQR
* @描述 日志级别是LEVEL_ALL显示所有信息, 包括System.out.println信息
* 日志级别是LEVEL_OFF关闭所有信息,包括System.out.println信息
*/
public class LogUtils {
/**
* 日志输出时的TAG
*/
private static String mTag = AppConst.TAG;
/**
* 日志输出级别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 = AppConst.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---");
}
public static void logParamter(String url, String[]... paramter) {
LogUtils.e("url = " + url);
for (String[] p : paramter) {
LogUtils.e(p[0] + " = " + p[1]);
}
}
}