android debug, print class name, line number

来源:互联网 发布:淘宝客服问题大全 编辑:程序博客网 时间:2024/05/19 00:16

在Android调试的时候,有时候需要打印指定的行号和类名。

下面是一个调试log的类。

package com.project.mocha_doctor.common;import android.util.Log;public class SmabDebug {private final static boolean DEBUG = true;private final static String TAG = "YXH";private final static int pos = 3;public static void log(String message)    {        if (DEBUG)        {            String fullClassName = Thread.currentThread().getStackTrace()[pos].getClassName();                        String className = fullClassName.substring(fullClassName.lastIndexOf(".") + 1);            String methodName = Thread.currentThread().getStackTrace()[pos].getMethodName();            int lineNumber = Thread.currentThread().getStackTrace()[pos].getLineNumber();            Log.i(TAG + " - "  + className + "." + methodName + "():" + lineNumber, message);        }    }/*0VMStack.getThreadStackTrace()1Thread.getStackTrace()2SmabDebug.printStack()3HttpRequestTask.onPostExecute()4HttpRequestTask.onPostExecute()5AsyncTask.finish()6AsyncTask.access$600()7AsyncTask$InternalHandler.handleMessage()8Handler.dispatchMessage()9Looper.loop()10ActivityThread.main()11Method.invokeNative()12Method.invoke()13ZygoteInit$MethodAndArgsCaller.run()14ZygoteInit.main()15NativeStart.main() If the value = 3, it means the caller Class. */public static void printStack (){int deep = Thread.currentThread().getStackTrace().length;for (int i = 0; i < deep; i ++){ String fullClassName = Thread.currentThread().getStackTrace()[i].getClassName();                     String className = fullClassName.substring(fullClassName.lastIndexOf(".") + 1);         String methodName = Thread.currentThread().getStackTrace()[i].getMethodName();         Log.i(TAG,  className + "." + methodName + "()");}}}
调用的时候只需要简单的

SmabDebug.log ( "Status code ---->" + codeStr);

log输出为如下, 不会输出这个类名。

I/YXH - ServerTimeSyncUp$GETRequestListener.ServerResponse():86(13348):Status code----->145

0 0
原创粉丝点击