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 
* * 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;}}

更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. 【Android(安卓)界面效果15】Android(安卓)UI 之一步步教你自定
  3. Activity有几点你可能不知道的
  4. Android(安卓)蓝牙开发实例--蓝牙聊天程序的设计和实现
  5. Android(安卓)Accessibility(辅助功能) 学习
  6. Android(安卓)NDK调用Java方法
  7. [置顶] Android中inflate方法的用法
  8. Android中音视频合成的几种方案详析
  9. Android(安卓)中自定义View的应用(二)

随机推荐

  1. Android历史
  2. Android 2011年开发风向标
  3. android shape 代码实现按钮背景
  4. Pyqtdeploy Android PyQtForAndroid 编译
  5. Android基础笔记(五)-网络编程
  6. Android编译系统的架构 简述
  7. [笔记分享] [Android] Android系统概述
  8. Android(安卓)8.1 锁屏界面 壁纸半透明改
  9. 23.《Android安全攻防权威指南》笔记
  10. Android下native code(C++)的编译,NDK的使用