Android 日志工具类,对原生日志的高级封装,统一管理,方便切换各级别的日志


import java.util.Hashtable;import android.util.Log;/** * 日志类 * @author WikerYong Email:<a href="#">yw_312@foxmail.com</a> * @version 2012-5-23 下午3:57:25 */public class LogUtils {// 是否开启日志private final static boolean logFlag = true;public final static String tag = "[Wiker]";//日志级别private final static int logLevel = Log.VERBOSE;private static Hashtable<String, LogUtils> sLoggerTable = new Hashtable<String, LogUtils>();private String mClassName;private static LogUtils log;private final static String user="Wiker";private LogUtils(String name) {mClassName = name;}/** *  * @param className * @return */@SuppressWarnings("rawtypes")    public static LogUtils getLogger(Class c) {LogUtils classLogger = (LogUtils) sLoggerTable.get(c.getClass().getName());if (classLogger == null) {classLogger = new LogUtils(c.getClass().getName());sLoggerTable.put(c.getClass().getName(), classLogger);}return classLogger;}/** * Purpose:Mark user one *  * @return */public static LogUtils log() {if (log == null) {log = new LogUtils(user);}return log;}/** * 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) {Log.i(tag, name + " - " + str);} else {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) {Log.e(tag, name + " - " + str);} else {Log.e(tag, str.toString());}}}}/** * The Log Level:e *  * @param ex */public void e(Exception ex) {if (logFlag) {if (logLevel <= Log.ERROR) {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();Log.e(tag, "{Thread:" + Thread.currentThread().getName() + "}"+ "[" + mClassName + line + ":] " + log + "\n", tr);}}}


更多相关文章

  1. android的Log日志打印管理工具类(一)
  2. android 发布正式版时用Gradle移除日志打印代码(添加混淆配置)
  3. android log日志文件输出
  4. idea开发android studio插件,打印日志
  5. Android日志服务例子,将日志保存在文件中并每天产生一个日志文件
  6. Android 编程下的日志工具类
  7. 小白的App开发日志-使用Kotlin开发App - [Android, Kotlin]
  8. Android Studio连接华为mate8手机调试时不显示错误日志的解决办
  9. Android崩溃日志获取与解析

随机推荐

  1. android 浏览器 app层,framework层,webkit
  2. 在移动开发中,关于发送消息及解析消息响应
  3. Android(安卓)O 8.0 通知(Notification)
  4. Android(安卓)Studio 设置代码提示和代码
  5. Android(安卓)SDK开发嵌套aar文件
  6. Android(安卓)锁屏后handler计时失效
  7. android导入外部数据库到项目中的使用方
  8. 揭开Android神秘面纱之Activity
  9. Android最佳实践 为响应灵敏性设计
  10. Android之Binder和AIDL原理