android 自定义log打印
来源:互联网 发布:linux ipv6 dns设置 编辑:程序博客网 时间:2024/05/16 15:51
自定义log打印
自定义一个log打印类(单例模式),使用属性控制log打印开关和log的级别,使用的时候要注意,一定要在使用完后,如在activity的onDestory
中调用release()
函数释放静态类。代码如下:
/************************************************* * @author SDT13001 * @E-mail * @date 2016年12月16日 上午11:26:55 * @version 1.0 *************************************************/import android.os.SystemProperties;import android.util.Log;public class SkLog { private static String tag = "AutoTest"; public static int logLevel = Log.VERBOSE; public static boolean isDebug = true; private static SkLog mLog = null; /* * the property that control log open or closed: * Values 'n', 'no', '0', 'false' or 'off' are considered false.Values 'y', 'yes', '1', 'true' or 'on' are considered true. */ private static String PRO_LOG = "persist.sys.factory_log"; //thr property control log level ,default is 2 private static String PRO_LOG_LEVEL = "persist.sys.factory_log_level"; public SkLog(){ isDebug = SystemProperties.getBoolean(PRO_LOG,isDebug); logLevel = SystemProperties.getInt(PRO_LOG_LEVEL, logLevel); } public synchronized static void release(){ mLog = null; } private String getFunctionName() { StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace(); if (stacktrace == null) { return null; } /*for (int i = 0; i < stacktrace.length; i++) { System.out.println("---- the " + i + " element ----"); System.out.println("isNativeMethod: "+ stacktrace[i].isNativeMethod() ); System.out.println("toString: " + stacktrace[i].toString()); System.out.println("ClassName: " + stacktrace[i].getClassName()); System.out.println("FileName: " + stacktrace[i].getFileName()); System.out.println("LineNumber: " + stacktrace[i].getLineNumber()); System.out.println("MethodName: " + stacktrace[i].getMethodName()); }*/ for(StackTraceElement st:stacktrace) { if(st.isNativeMethod()) { continue; } if(st.getClassName().equals(Thread.class.getName())) { continue; } if(st.getClassName().equals(this.getClass().getName())) { continue; } return st.getFileName()+"(line:"+st.getLineNumber()+")"; } return null; } private static void info(Object str) { if(null == mLog){ mLog = new SkLog(); } if (logLevel <= Log.INFO) { String name = mLog.getFunctionName(); String ls=(name==null?str.toString():(name+" - "+str)); Log.i(tag, ls); } } public static void i(Object str) { if(null == mLog){ mLog = new SkLog(); } if (isDebug) { info(str); } } private static void verbose(Object str) { if(null == mLog){ mLog = new SkLog(); } if(logLevel <= Log.VERBOSE) { String name = mLog.getFunctionName(); String ls=(name==null?str.toString():(name+" - "+str)); Log.v(tag, ls); } } public static void v(Object str) { if(null == mLog){ mLog = new SkLog(); } if (isDebug) { verbose(str); } } private static void warn(Object str) { if(null == mLog){ mLog = new SkLog(); } if (logLevel <= Log.WARN) { String name = mLog.getFunctionName(); String ls=(name==null?str.toString():(name+" - "+str)); Log.w(tag, ls); } } public static void w(Object str) { if(null == mLog){ mLog = new SkLog(); } if (isDebug) { warn(str); } } private static void error(Object str) { if(null == mLog){ mLog = new SkLog(); } if(logLevel <= Log.ERROR) { String name = mLog.getFunctionName(); String ls=(name==null?str.toString():(name+" - "+str)); Log.e(tag, ls); } } public static void e(Object str) { if(null == mLog){ mLog = new SkLog(); } if (isDebug) { error(str); } } private static void error(Exception ex) { if(null == mLog){ mLog = new SkLog(); } if(logLevel <= Log.ERROR) { StringBuffer sb = new StringBuffer(); String name = mLog.getFunctionName(); StackTraceElement[] sts = ex.getStackTrace(); if (name != null) { sb.append(name+" - "+ex+"\r\n"); } else { sb.append(ex+"\r\n"); } if(sts != null && sts.length > 0) { for(StackTraceElement st:sts) { if(st != null) { sb.append("[ "+st.getFileName()+":"+st.getLineNumber()+" ]\r\n"); } } } Log.e(tag, sb.toString()); } } public static void e(Exception ex) { if(null == mLog){ mLog = new SkLog(); } if (isDebug) { error(ex); } } private static void debug(Object str) { if(null == mLog){ mLog = new SkLog(); } if(logLevel <= Log.DEBUG) { String name = mLog.getFunctionName(); String ls=(name==null?str.toString():(name+" - "+str)); Log.d(tag, ls); } } public static void d(Object str) { if(null == mLog){ mLog = new SkLog(); } if (isDebug) { debug(str); } }}
0 0
- 自定义Android Log打印
- Android 自定义打印log
- android 自定义log打印
- android 自定义打印log类
- Android log打印方法
- Android中打印log
- Android 内核打印Log
- Android NDK 打印log
- android log 信息打印
- android jni打印log
- android 不打印log
- android打印log日志
- Android JNI打印Log
- Android Log打印等级
- 自定义打印函数/log打印工具
- android自定义log
- Android LOG标签自定义
- Android 自定义Log
- Metrics.NET源码阅读笔记
- 8953n的user获取权限以及remount
- spring配置
- oracle数据库创建用户,创建表以及Scott的解锁
- could not load library libopencv_java.so
- android 自定义log打印
- http://www.cnblogs.com/tiantianbyconan/p/5972138.html
- Building R-devel on RedHat Linux 6
- (去重)去除数组中重复数字的算法
- 学习了一篇文章,css实现Tab
- Python扩展实现方法--Python与c混合编程
- 揭开Unity AssetBundle庐山真面目(一)
- 初识Hadoop
- Ceph RBD为Kubernetes集群提供分布式数据存储