一个好用的日志管理工具类MyLogger

日志的规范管理,在项目中不容忽视,应用上线后将调试日志关闭也是十分必要的,下面就是一个好用的日志管理工具类(点击下载):

import java.util.Hashtable;

import android.util.Log;

/** 
 * The class for print log 
 * @author kesenhoo 
 */  
public class MyLogger  
{  
    private final static boolean                logFlag         = true;  //调试模式 true  上线模式 false

    public final static String                  tag             = "APPNAME";//日志打印  tag
    private final static int                    logLevel        = Log.VERBOSE; //日志级别
    //集合
    private static Hashtable<String, MyLogger>    sLoggerTable    = new Hashtable<String, MyLogger>();  
    private String                              mClassName;

    //不同开发人员的日志使用对象
    private static MyLogger                     slog;
    private static MyLogger                     jlog;
    private static MyLogger                     klog;

    //开发人员的名字
    private static final String                 SIMON           = "@simon@ ";
    private static final String                 JAMES           = "@james@ ";
    private static final String                 KESEN           = "@kesen@ ";

    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 kLog()  
    {  
        if(klog == null)  
        {  
            klog = new MyLogger(KESEN);  
        }  
        return klog;  
    }  
    /** 
     * Purpose:Mark user two 
     * @return 
     */  
    public static MyLogger jLog()  
    {  
        if(jlog == null)  
        {  
            jlog = new MyLogger(JAMES);  
        }  
        return jlog;  
    }

    /**
     * Purpose:Mark user three
     * @return
     */
    public static MyLogger slog()
    {
        if(slog == null)
        {
            slog = new MyLogger(SIMON);
        }
        return slog;
    }

    /** 
     * 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())  
            {
                //本地方法native  jni
                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);  
        }  
    }  
}  

使用示例:

         MyLogger log=MyLogger.slog();
        log.i("这是一个很好用的的日志工具类");

效果:

I/APPNAME: @simon@ [ main: Main_activity.java:52 onCreate ] - 这是一个很好用的的日志工具类

我的博客网站:http://huyuxin.top/欢迎大家访问!评论!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值