package com.rctd.tmzs.util;



import android.util.Log;



/**  

 * 日志输出工具类

 * @author    WuHao; Email: 1024778537@qq.com  

 * @version   V1.0;  Date:  2014-05-26 11:35:20  

 */  

public class LogUtil {



private static String tag = "LogUtil";


private int logLevel = Log.VERBOSE;

private static final boolean isDebug = true;

private static LogUtil instance = null;



public static synchronized LogUtil getInstance() {

return getInstance(Log.VERBOSE);

}


public static synchronized LogUtil getInstance(int level) {

if (instance == null)

instance = new LogUtil();

if (level >= 2)

instance.setLevel(level);

return instance;

}



private LogUtil() {


}


public void setLevel(int level){

this.logLevel = level;

}



private String getFunctionName() {

StackTraceElement[] sts = Thread.currentThread().getStackTrace();

if (sts == null) {

return null;

}

for (StackTraceElement st : sts) {

if (st.isNativeMethod()) {

continue;

}

if (st.getClassName().equals(Thread.class.getName())) {

continue;

}

if (st.getClassName().equals(this.getClass().getName())) {

continue;

}

return "[" + Thread.currentThread().getName() + "(" + Thread.currentThread().getId() + "): " + st.getFileName() + ":" + st.getLineNumber() + "]";

}

return null;

}



private void outMsg(Object str) {

String msg = (str == null ? "" : str.toString());

String name = getFunctionName();

String ls = (name == null ?

msg.toString() : (name + " - " + msg));

if (logLevel == Log.DEBUG) {

Log.d(tag, ls);

} else if (logLevel == Log.INFO) {

Log.i(tag, ls);

} else if (logLevel == Log.WARN) {

Log.w(tag, ls);

} else if (logLevel == Log.ERROR) {

Log.e(tag, ls);

} else {

Log.v(tag, ls);

}

}



public void out(Object msg) {

if (isDebug) {

outMsg(msg);

}

}

}