您的位置:首页 > 移动开发 > Android开发

Android sdk开发(二) Log日志类的设计

2015-12-22 00:49 549 查看

Log类的设计

正式代码设计之前我们先考虑一下日志类的使用。

日志主要用在调试app 一些复杂的业务流程,借助log 可以很容易找到问题所在



因为android.util.Log 定义为final类(不可继承) 所以我采用组合的方式才重写一个可以控制开关的日志工具类。考虑到Log应用的广泛性,所以定义为static,生命周期为全局



public class Log {

/**
* 日志的开关, false 表示不打印日志
 */
private static boolean open = false;

public static boolean isOpen() {
        return open;
}

public static void setOpen(boolean open) {
	Log.open = open;
}


Log的开关控制,一般在app初始化的地方设置。后续再讨论

public static void d(String tag, String msg){
       if(open == false){
              return;  //  不打印日志
       }
       android.util.Log.d(tag,msg);
}




其中tag和msg 考虑到传入的参数需要频繁转型

比如说像打印一个int型的变量值。这时候会很不方便。同理其他非String类型的都需要转化为String 。

因为优化一下当前方法

public static voidd(Object tag, Object msg){
       if(open == false){
              return;  //  不打印日志
       }
       android.util.Log.d(String.valueOf(tag), String.valueOf(msg));
}


这时候如果传入的 tag == null 或者“” 或者 包含有” ” \n\r等字符 ,那么输出的结果可能不是我们想要的,

接着继续优化一下该方法

package phoebe.frame.util;

/**
 * 日志打印
 * 
 * @author coffee <br>
 * 
 *         2015-12-16 下午9:39:41
 */
public class Log {

	/**
	 * 日志的开关, false 表示不打印日志
	 */
	private static boolean open = false;

	public static boolean isOpen() {
		return open;
	}

	public static void setOpen(boolean open) {
		Log.open = open;
	}

	public static void d(Object tag, Object msg) {
		if (open == false) {
			return;
		}
		tag = handleMsgOrTag(tag);
		msg = handleMsgOrTag(msg);
		android.util.Log.d(String.valueOf(tag), String.valueOf(msg));
	}

	private static Object handleMsgOrTag(Object msgOrTag) {
		if (msgOrTag == null) {
			msgOrTag = "[null]";
		} else if (msgOrTag.toString().trim().length() == 0) {
			msgOrTag = "[\"\"]";
		} else {
			msgOrTag = msgOrTag.toString().trim();
		}
		return msgOrTag;
	}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: