Android 如何统一管理log日志,在发布版本时不输出任何日志信息。

自定义log工具类
import java.util.Hashtable;

import android.util.Log;

/**
 * 通过应用名AppName来过滤log
 * 该log实现的功能是会输入当前log是谁写的,log所在的包名,线程名,类名,哪一行,所在方法名
 * 还可以通过设置true,false来控制发布的时候不显示log
 * 
 */
public class MyLogger {
	private final static boolean logFlag = true;

	public final static String tag = "[MobilePayMent]";
	private final static int logLevel = Log.VERBOSE;
	private static Hashtable<String, MyLogger> sLoggerTable = new Hashtable<String, MyLogger>();
	private  String mClassName;

	private static MyLogger zyqLog;
	private static MyLogger ltLog;
	private static MyLogger fmeLog;
	private static MyLogger zsLog;
	private static MyLogger ldwLog;
	private static MyLogger oLog;

	private static final String ZHOUYQ = "@zhouyq@ ";
	private static final String LUOT = "@luot@ ";
	private static final String FANGME = "@fanme@ ";
	private static final String ZHANGS = "@zhangs@ ";
	private static final String LIUDW = "@liudw@ ";
	private static final String OTHER = "@other@ ";
	
	public static boolean isOutLog=false;//true表示输出日子,false表示不输入日子

	private MyLogger(String name) {
		mClassName = name;
	}

	/**
	 * 
	 * @param className
	 * @return
	 */
	@SuppressWarnings("unused")
	private static MyLogger getLogger(String className) {
		MyLogger classLogger = (MyLogger) sLoggerTable.get(className);
		if (classLogger == null) {
			classLogger = new MyLogger(className);
			sLoggerTable.put(className, classLogger);
		}
		return classLogger;
	}

	/**
	 * Purpose:Mark user one
	 * 
	 * @return
	 */
	public static MyLogger zyqLog() {
		if (zyqLog == null) {
			zyqLog = new MyLogger(ZHOUYQ);
		}
		return zyqLog;
	}

	/**
	 * Purpose:Mark user two
	 * 
	 * @return
	 */
	public static MyLogger zsLog() {
		if (zsLog == null) {
			zsLog = new MyLogger(ZHANGS);
		}
		return zsLog;
	}
	
	/**
	 * Purpose:Mark user three
	 * 
	 * @return
	 */
	public static MyLogger ltLog(){
		if (ltLog == null) {
			ltLog = new MyLogger(LUOT);
		}
		return ltLog;
	}
	
	/**
	 * Purpose:Mark user four
	 * 
	 * @return
	 */
	public static MyLogger ldwLog(){
		if (ldwLog == null) {
			ldwLog = new MyLogger(LIUDW);
		}
		return ldwLog;
	}
	/**
	 * Purpose:Mark user five
	 * 
	 * @return
	 */
	public static MyLogger fmeLog(){
		if (fmeLog == null) {
			fmeLog = new MyLogger(FANGME);
		}
		return fmeLog;
	}
	
	/**
	 * Purpose:Mark user five
	 * 
	 * @return
	 */
	public static MyLogger aLog(){
		if (oLog == null) {
			oLog = new MyLogger(OTHER);
		}
		return oLog;
	}
	

	/**
	 * Get The Current Function Name
	 * 
	 * @return
	 */
	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 mClassName + "[ " + Thread.currentThread().getName() + ": "
					+ st.getFileName() + ":" + st.getLineNumber() + " "
					+ st.getMethodName() + " ]";
		}
		return null;
	}

	/**
	 * The Log Level:i
	 * 
	 * @param str
	 */
	public void i(Object str) {
		if (logFlag) {
			if (logLevel <= Log.INFO) {
				String name = getFunctionName();
				if (name != null) {
					if(isOutLog)
					Log.i(tag, name + " - " + str);
				} else {
					if(isOutLog)
					Log.i(tag, str.toString());
				}
			}
		}

	}

	/**
	 * The Log Level:d
	 * 
	 * @param str
	 */
	public void d(Object str) {
		if (logFlag) {
			if (logLevel <= Log.DEBUG) {
				String name = getFunctionName();
				if (name != null) {
					Log.d(tag, name + " - " + str);
				} else {
					Log.d(tag, str.toString());
				}
			}
		}
	}

	/**
	 * The Log Level:V
	 * 
	 * @param str
	 */
	public void v(Object str) {
		if (logFlag) {
			if (logLevel <= Log.VERBOSE) {
				String name = getFunctionName();
				if (name != null) {
					Log.v(tag, name + " - " + str);
				} else {
					Log.v(tag, str.toString());
				}
			}
		}
	}

	/**
	 * The Log Level:w
	 * 
	 * @param str
	 */
	public void w(Object str) {
		if (logFlag) {
			if (logLevel <= Log.WARN) {
				String name = getFunctionName();
				if (name != null) {
					Log.w(tag, name + " - " + str);
				} else {
					Log.w(tag, str.toString());
				}
			}
		}
	}

	/**
	 * The Log Level:e
	 * 
	 * @param str
	 */
	public void e(Object str) {
		if (logFlag) {
			if (logLevel <= Log.ERROR) {
				String name = getFunctionName();
				if (name != null) {
					if(isOutLog)
					Log.e(tag, name + " - " + str);
				} else {
					if(isOutLog)
					Log.e(tag, str.toString());
				}
			}
		}
	}
    
	/**
	 * The Log Level:e
	 * 
	 * @param ex
	 */
	public void e(Exception ex) {
		if (logFlag) {
			if (logLevel <= Log.ERROR) {
				if(isOutLog)
				Log.e(tag, "error", ex);
			}
		}
	}

	/**
	 * The Log Level:e
	 * 
	 * @param log
	 * @param tr
	 */
	public void e(String log, Throwable tr) {
		if (logFlag) {
			String line = getFunctionName();
			if(isOutLog)
			Log.e(tag, "{Thread:" + Thread.currentThread().getName() + "}"
					+ "[" + mClassName + line + ":] " + log + "\n", tr);
		}
	}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值