/**
* @description 日志输出控制类
* @date 2015-06-19
*/
public class LogUtils {
/**
* 日志输出时的TAG
*/
private static String mTag = "tag";
/**
* 用于记时的变量
*/
private static long mTimestamp = 0;
/**
* 写文件的锁对象
*/
private static final Object mLogLock = new Object();
/**
* 以级别为 d 的形式输出LOG
*/
public static void v(String msg) {
if (BuildConfig.LOG_DEBUG) {
printStack();
Log.v(mTag, msg);
}
}
/**
* 以级别为 d 的形式输出LOG
*/
public static void d(String msg) {
if (BuildConfig.LOG_DEBUG) {
printStack();
Log.d(mTag, msg);
}
}
/**
* 以级别为 i 的形式输出LOG
*/
public static void i(String msg) {
if (BuildConfig.LOG_DEBUG) {
printStack();
Log.i(mTag, msg);
}
}
/**
* 以级别为 w 的形式输出LOG
*/
public static void w(String msg) {
if (BuildConfig.LOG_DEBUG) {
printStack();
Log.w(mTag, msg);
}
}
/**
* 以级别为 w 的形式输出Throwable
*/
public static void w(Throwable tr) {
if (BuildConfig.LOG_DEBUG) {
Log.w(mTag, "", tr);
}
}
/**
* 以级别为 w 的形式输出LOG信息和Throwable
*/
public static void w(String msg, Throwable tr) {
if (BuildConfig.LOG_DEBUG && null != msg) {
Log.w(mTag, msg, tr);
}
}
/**
* 以级别为 e 的形式输出LOG
*/
public static void e(String msg) {
if (BuildConfig.LOG_DEBUG) {
printStack();
Log.e(mTag, msg);
}
}
private static void printStack() {
StackTraceElement stackTraceElement = getTargetStackTraceElement();
Log.e(mTag, stackTraceElement.getFileName() + ":" + stackTraceElement.getLineNumber());
}
/**
* 以级别为 e 的形式输出Throwable
*/
public static void e(Throwable tr) {
if (BuildConfig.LOG_DEBUG) {
Log.e(mTag, "", tr);
}
}
/**
* 以级别为 e 的形式输出LOG信息和Throwable
*/
public static void e(String msg, Throwable tr) {
if (BuildConfig.LOG_DEBUG && null != msg) {
Log.e(mTag, msg, tr);
}
}
/**
* 把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);
}
private static StackTraceElement getTargetStackTraceElement() {
StackTraceElement targetStackTrace = null;
boolean shouldTrace = false;
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
for (StackTraceElement stackTraceElement : stackTraceElements) {
boolean isLogMethod = stackTraceElement.getClassName().equals(LogUtils.class.getName());
if (shouldTrace && !isLogMethod) {
targetStackTrace = stackTraceElement;
break;
}
shouldTrace = isLogMethod;
}
return targetStackTrace;
}
}
Android项目工具类
最新推荐文章于 2024-05-15 09:36:12 发布