Android 如何统一管理log日志,在发布版本时不输出任何日志信息。
2014-12-31 15:21
776 查看
自定义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); } } }
相关文章推荐
- android应用如何在发布市场时关掉所有的Log日志输出
- android应用如何在发布市场时关掉所有的Log日志输出
- android应用如何在发布市场时关掉所有的Log日志输出
- android应用如何在发布市场时关掉所有的Log日志输出
- android轻松管理安卓应用中的log日志 发布应用时log日志全部去掉的方法
- android轻松管理安卓应用中的log日志 发布应用时log日志全部去掉的方法
- android代码混淆发布版本时关闭log输出
- Android中Log.d和Log.v如何实现在release版本不输出
- 学习笔记6-Android查看应用输出的错误信息 如何部署应用到真实手机 发布软件
- Activity生命周期及如何存活 用log日志信息打印输出
- 学习笔记6-Android查看应用输出的错误信息 如何部署应用到真实手机 发布软件
- android轻松管理安卓应用中的log日志 发布应用时log日志全部去掉的方法
- tomcat日志配置,log信息如何输出到同一个文件
- android轻松管理安卓应用中的log日志 发布应用时log日志全部去掉的方法
- Android 发布版本不输出Log
- Cocos2d-x 中如何输出 Android手机下 带Tag的Log日志
- Android log日志信息获取
- Android log日志信息获取
- android-基础知识:android调试总结(Log日志输出, Debug, 单元测试)
- android在发布版本时删除打印的控制台日志