Android日志Log的封装以及每个级别的意义

Log级别介绍

Log.v()是日志级别中最低的,对应verbose,常用于打印琐碎,意义不大的日志信息。

Log.d()比Log.v()高一级,对应debug,常用于打印一些调试信息。

Log.i()比Log.d()高一级,对应info,常用于打印分析问题的重要数据。

Log.w()比Log.i()高一级,对应warn,常用于打印警告。

Log.e()比Log.w()高一级,对应error,常用于打印错误信息。

Log的封装

以下代码直接复制就能使用。

import android.util.Log;

public class LogUtils {

    private static boolean open = true;         //日志工具是否开启,默认为true
    private static String className;            //类名
    private static String methodName;           //方法名
    private static int lineNumber;              //所在行数

    public static boolean isOpen() {
        return open;
    }

    public static void setOpen(boolean open) {
        LogUtils.open = open;
    }

    /**
     * 获取方法名,类名,行数
     * @param elements
     */
    private static void getMethodName(StackTraceElement[] elements){
        className = elements[1].getFileName();
        methodName = elements[1].getMethodName();
        lineNumber = elements[1].getLineNumber();
    }

    /**
     * 创建msg
     * @param msg
     * @return
     */
    private static String createMsg(String msg){
        StringBuffer buffer = new StringBuffer();
        buffer.append(methodName);
        buffer.append("(").append(className).append(":").append(lineNumber).append(")");
        buffer.append(msg);
        return buffer.toString();
    }

    /**
     * 检查msg是否为null
     * @param msg
     * @return
     */
    private static Object handleMsg(Object msg) {
        if (msg == null){
            msg = "[null]";
        }else if (msg.toString().trim().length() == 0){
            msg = "[\"\"]";
        }else {
            msg = msg.toString().trim();
        }
        return msg;
    }

    public static void v(Object msg){
        if (!open){
            return;
        }
        msg = handleMsg(msg);
        getMethodName(new Throwable().getStackTrace());
        Log.v(className,createMsg(msg.toString()));
    }

    public static void d(Object msg){
        if (!open){
            return;
        }
        msg = handleMsg(msg);
        getMethodName(new Throwable().getStackTrace());
        Log.d(className,createMsg(msg.toString()));
    }

    public static void i(Object msg){
        if (!open){
            return;
        }
        msg = handleMsg(msg);
        getMethodName(new Throwable().getStackTrace());
        Log.i(className,createMsg(msg.toString()));
    }

    public static void w(Object msg){
        if (!open){
            return;
        }
        msg = handleMsg(msg);
        getMethodName(new Throwable().getStackTrace());
        Log.w(className,createMsg(msg.toString()));
    }

    public static void e(Object msg){
        if (!open){
            return;
        }
        msg = handleMsg(msg);
        getMethodName(new Throwable().getStackTrace());
        Log.e(className,createMsg(msg.toString()));
    }
}

发现错误请指出,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值