我正在使用android.util.Log
class Foo
{
private void boo()
{
// This is the basic log of android.
Log.i("tag", "Start");
}
}
我希望日志应该打印[Foo::boo] Start
我可以在Java中获取类和函数名吗?那我该如何包装代码?
答案 0 :(得分:5)
这里 <强>已更新强>
String tag = "[";
tag += this.getClass().toString();
tag += " :: ";
tag += Thread.currentThread().getStackTrace()[1].getMethodName().toString();
tag += "]";
Log.i(tag, "Message");
this.getClass().toString()
将类名返回为String
<强>更新强>
如果函数为static
,则使用以下代码
String tag = "[";
tag += Thread.currentThread().getStackTrace()[1].getClassName().toString();
tag += " :: ";
tag += Thread.currentThread().getStackTrace()[1].getMethodName().toString();
tag += "]";
Log.i(tag, "Message");
答案 1 :(得分:2)
获取当前班级名称和职能名称:
Log.i(getFunctionName(), "Start");
private 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(this.getClass().getName()))
{
continue;
}
return mClassName + "[ " + Thread.currentThread().getName() + ": "
+ " " + st.getMethodName() + " ]";
}
return null;
}
答案 2 :(得分:1)
您可以使用 java.lang.Class 类
的这些方法getClass().getname() - to get the name of the class
getClass().getMethods() - to get the methods declared in that class.