android logcat中显示当前类名函数名和行数信息

android logcat中显示当前类名函数名和行数信息

import android.util.Log;

public class LogUtils {

    private static final String TAG = "LogUtils";
    private static final int STACK_TRACE = 3;

    public static void log(String log){
        StringBuffer sb = new StringBuffer(log);
        sb.append(getSystemMsg());
        Log.println(Log.ASSERT, TAG, sb.toString());
    }

    public static void logStackTrace(){
        log(Log.getStackTraceString(new Throwable()));
    }

    private static String getSystemMsg(){
        StringBuffer sb = new StringBuffer();
        sb.append("  [ ");
        sb.append("file:").append(getFileName()).append(", ");
        sb.append("line:").append(getLineNumber()).append(", ");
        sb.append("method:").append(getMethodName()).append(", ");
        sb.append("class:").append(getClassName());
        sb.append(" ]");
        return sb.toString();
    }

    private static String getLineNumber(){
        return String.valueOf(new Throwable().getStackTrace()[STACK_TRACE].getLineNumber());
    }

    private static String getMethodName(){
        return new Throwable().getStackTrace()[STACK_TRACE].getMethodName();
    }

    private static String getClassName(){
        return new Throwable().getStackTrace()[STACK_TRACE].getClassName();
    }

    private static String getFileName(){
        return new Throwable().getStackTrace()[STACK_TRACE].getFileName();
    }

}

需要注意的是 STACK_TRACE , 可以理解是调用函数的堆栈数,调整这个值可以获得第STACK_TRACE次调用的函数,如果现实的函数名不对,试着调下这个值就好了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值