zoukankan      html  css  js  c++  java
  • Android开发日志统一管理

    在开发中,我们通常要对日志的输出做统一管理,下面就为大家推荐一个日志输出类,在开发阶段只需将DEBUG常量设为true,生产环境将DEBUG设为false即可控制日志的输出。啥都不说了,需要的朋友直接带走。

    package com.android.util;
    
    /**
     * 日志输出统一管理
     * 
     * @author 祁连山
     * @date 2015-04-27
     * @version 1.0
     * 
     */
    public class Log {
    
        private static final String TAG = "com.android.app";
        private static final boolean DEBUG = true;
    
        private static 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(Log.class.getName())) {
                    continue;
                }
                return "[" + Thread.currentThread().getName() + "(" + Thread.currentThread().getId() + "): " + st.getFileName() + ":" + st.getLineNumber() + "]";
            }
            return null;
        }
    
        private static String createMessage(String msg) {
            String functionName = getFunctionName();
            String message = (functionName == null ? msg : (functionName + " - " + msg));
            return message;
        }
    
        public static void i(String msg) {
            if (DEBUG) {
                String message = createMessage(msg);
                android.util.Log.i(TAG, message);
            }
        }
    
        public static void v(String msg) {
            if (DEBUG) {
                String message = createMessage(msg);
                android.util.Log.v(TAG, message);
            }
        }
    
        public static void d(String msg) {
            if (DEBUG) {
                String message = createMessage(msg);
                android.util.Log.d(TAG, message);
            }
        }
    
        public static void e(String msg) {
            if (DEBUG) {
                String message = createMessage(msg);
                android.util.Log.e(TAG, message);
            }
        }
    
        public static void w(String msg) {
            if (DEBUG) {
                String message = createMessage(msg);
                android.util.Log.w(TAG, message);
            }
        }
    
        public static void e(Exception e) {
            if (DEBUG) {
                StringBuffer sb = new StringBuffer();
                String name = getFunctionName();
                StackTraceElement[] sts = e.getStackTrace();
    
                if (name != null) {
                    sb.append(name + " - " + e + "
    ");
                } else {
                    sb.append(e + "
    ");
                }
                if (sts != null && sts.length > 0) {
                    for (StackTraceElement st : sts) {
                        if (st != null) {
                            sb.append("[ " + st.getFileName() + ":" + st.getLineNumber() + " ]
    ");
                        }
                    }
                }
                android.util.Log.e(TAG, sb.toString());
            }
        }
    }
  • 相关阅读:
    [c/c++] programming之路(13)、函数
    [c/c++] programming之路(12)、循环结构
    opencv学习之路(18)、霍夫变换
    [c/c++] programming之路(11)、顺序分支
    opencv学习之路(17)、边缘检测
    opencv学习之路(16)、膨胀腐蚀应用之走迷宫
    [c/c++] programming之路(10)、格式符后续
    opencv学习之路(15)、形态学其他操作(开、闭、顶帽、黑帽、形态学梯度)
    opencv学习之路(14)、形态学之膨胀腐蚀
    [c/c++] programming之路(9)、运算优先级
  • 原文地址:https://www.cnblogs.com/magics/p/4484803.html
Copyright © 2011-2022 走看看