Log级别介绍
Log.v()是日志级别中最低的,对应verbose,常用于打印琐碎,意义不大的日志信息。
Log.d()比Log.v()高一级,对应debug,常用于打印一些调试信息。
Log.i()比Log.d()高一级,对应info,常用于打印分析问题的重要数据。
Log.w()比Log.i()高一级,对应warn,常用于打印警告。
Log.e()比Log.w()高一级,对应error,常用于打印错误信息。
Log的封装
以下代码直接复制就能使用。
import android.util.Log;
public class LogUtils {
private static boolean open = true; //日志工具是否开启,默认为true
private static String className; //类名
private static String methodName; //方法名
private static int lineNumber; //所在行数
public static boolean isOpen() {
return open;
}
public static void setOpen(boolean open) {
LogUtils.open = open;
}
/**
* 获取方法名,类名,行数
* @param elements
*/
private static void getMethodName(StackTraceElement[] elements){
className = elements[1].getFileName();
methodName = elements[1].getMethodName();
lineNumber = elements[1].getLineNumber();
}
/**
* 创建msg
* @param msg
* @return
*/
private static String createMsg(String msg){
StringBuffer buffer = new StringBuffer();
buffer.append(methodName);
buffer.append("(").append(className).append(":").append(lineNumber).append(")");
buffer.append(msg);
return buffer.toString();
}
/**
* 检查msg是否为null
* @param msg
* @return
*/
private static Object handleMsg(Object msg) {
if (msg == null){
msg = "[null]";
}else if (msg.toString().trim().length() == 0){
msg = "[\"\"]";
}else {
msg = msg.toString().trim();
}
return msg;
}
public static void v(Object msg){
if (!open){
return;
}
msg = handleMsg(msg);
getMethodName(new Throwable().getStackTrace());
Log.v(className,createMsg(msg.toString()));
}
public static void d(Object msg){
if (!open){
return;
}
msg = handleMsg(msg);
getMethodName(new Throwable().getStackTrace());
Log.d(className,createMsg(msg.toString()));
}
public static void i(Object msg){
if (!open){
return;
}
msg = handleMsg(msg);
getMethodName(new Throwable().getStackTrace());
Log.i(className,createMsg(msg.toString()));
}
public static void w(Object msg){
if (!open){
return;
}
msg = handleMsg(msg);
getMethodName(new Throwable().getStackTrace());
Log.w(className,createMsg(msg.toString()));
}
public static void e(Object msg){
if (!open){
return;
}
msg = handleMsg(msg);
getMethodName(new Throwable().getStackTrace());
Log.e(className,createMsg(msg.toString()));
}
}