扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
package com.pzq.test.utils; import android.util.Log; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.HashMap; import android.os.Environment; import android.util.Log; import android.view.KeyEvent; import android.view.MotionEvent; /** * Log统一管理类 * Created by asus on 2016/6/23. */ public class LogUtils { private LogUtils() { /* cannot be instantiated */ throw new UnsupportedOperationException("cannot be instantiated"); } public static boolean isDebug = false;// 是否需要打印bug,可以在application的onCreate函数里面初始化 private static final String TAG = "main..........."; // 下面四个是默认tag的函数 public static void i(String msg) { if (isDebug) Log.i(TAG, msg); } public static void d(String msg) { if (isDebug) Log.d(TAG, msg); } public static void e(String msg) { if (isDebug) Log.e(TAG, msg); } public static void v(String msg) { if (isDebug) Log.v(TAG, msg); } // 下面是传入自定义tag的函数 public static void i(String tag, String msg) { if (isDebug) Log.i(tag, msg); } public static void d(String tag, String msg) { if (isDebug) Log.i(tag, msg); } public static void e(String tag, String msg) { if (isDebug) Log.i(tag, msg); } public static void v(String tag, String msg) { if (isDebug) Log.i(tag, msg); } ///////////////////////////////////////////////////////////////////////////////////////////////////////// private static final String LOG_PATH = Environment.getExternalStorageState() + "/Didi"; private static LogUtil sInstance; private static boolean debug; private LogUtil() { } public static synchronized final LogUtil getInstance() { if (sInstance == null) { sInstance = new LogUtil(); } return sInstance; } public static void setDebugMode(boolean mode) { debug = mode; } public static void v(String tag, String msg) { if (debug) { Log.v(tag, msg); } } public static void w(String tag, String msg) { if (debug) { Log.w(tag, msg); } } public static void i(String tag, String msg) { if (debug) { Log.i(tag, msg); } } public static void d(String tag, String msg) { if (debug) { Log.d(tag, msg); } } public static void e(String tag, String msg) { if (debug) { Log.e(tag, msg); } } public static void e(String tag, String msg, Throwable tr) { if (debug) { Log.e(tag, msg, tr); } } private static HashMapactionMap = new HashMap (); public static void a(Class> clazz, String method, MotionEvent event, String log) { a(clazz, method, event, log, true); } public static void a(Class> clazz, String method, MotionEvent event, String log, boolean ignoreDuplicate) { if (!debug || event == null) return; int action = event.getAction(); String calssName = clazz == null ? "" : clazz.getSimpleName(); String key = calssName + method; Integer i = actionMap.get(key); int value = -10; if (i != null) value = i; if (action != value) actionMap.put(key, action); if (ignoreDuplicate && action == value) return; StringBuilder sb = new StringBuilder(); sb.append("class : " + calssName); sb.append(TextUtil.isEmpty(calssName) ? "" : ", method : " + method); sb.append(", action : " + getAction(action)); sb.append(TextUtil.isEmpty(log) ? "" : ", log : " + log); Log.d("ActionTracker", sb.toString()); } public static void a(Class> clazz, String method, MotionEvent event) { a(clazz, method, event, ""); } public static void k(Class> clazz, String method, int keyCode, KeyEvent event) { k(clazz, method, keyCode, event, ""); } public static void k(Class> clazz, String method, int keyCode, KeyEvent event, String log) { if (!debug) { return; } String calssName = clazz == null ? "" : clazz.getSimpleName(); StringBuilder sb = new StringBuilder(); sb.append("class : " + calssName); sb.append(TextUtil.isEmpty(calssName) ? "" : ", method : " + method); sb.append(", keycode : " + keyCode); if (event != null) { int action = event.getAction(); sb.append(", action : " + getAction(action)); } sb.append(TextUtil.isEmpty(log) ? "" : ", log : " + log); Log.d("KeyEventTracker", sb.toString()); } public static String getAction(int action) { switch (action) { case MotionEvent.ACTION_CANCEL: return "ACTION_CANCEL"; case MotionEvent.ACTION_UP: return "ACTION_UP"; case MotionEvent.ACTION_DOWN: return "ACTION_DOWN"; case MotionEvent.ACTION_MOVE: return "ACTION_MOVE"; case MotionEvent.ACTION_OUTSIDE: return "ACTION_OUTSIDE"; // case MotionEvent.ACTION_SCROLL: // return "ACTION_SCROLL"; } return null; } public static void clearCache() { File logFile = new File(LOG_PATH + "/log4pad.txt"); if (logFile.exists()) { logFile.delete(); } } public static void writeToCache(String filter, String msg) { if (msg.contains(filter)) { FileOutputStream fos = null; try { File logFile = new File(LOG_PATH); if (!logFile.exists()) { logFile.mkdirs(); } fos = new FileOutputStream(logFile + "/log4pad.txt", true); fos.write(msg.getBytes()); fos.write("\n\r".getBytes()); fos.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (fos != null) { try { fos.close(); } catch (IOException e) { e.printStackTrace(); } fos = null; } } } } public static void trace() { StackTraceElement[] traces = Thread.currentThread().getStackTrace(); for (StackTraceElement stackTraceElement : traces) { LogUtil.d("Trace", stackTraceElement.toString()); } } }
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流