可以使用木材库登录方法名和行号在木材
预期logcat的结果记录当前行号和方法名称:
ismaeldivita.myapp I/[L:22] [M:onResume] [C:HomeActivity]: Praise the log!
可以使用木材库登录方法名和行号在木材
预期logcat的结果记录当前行号和方法名称:
ismaeldivita.myapp I/[L:22] [M:onResume] [C:HomeActivity]: Praise the log!
回答我的问题。
只需创建一个新的DebugTree类
public class MyDebugTree extends Timber.DebugTree {
@Override
protected String createStackElementTag(StackTraceElement element) {
return String.format("[L:%s] [M:%s] [C:%s]",
element.getLineNumber(),
element.getMethodName(),
super.createStackElementTag(element));
}
}
和植物的树材:
public class App extends Application {
@Override
public void onCreate(){
super.onCreate();
if (BuildConfig.DEBUG) {
Timber.plant(new MyDebugTree());
} else {
//TODO plant your Production Tree
}
}
}
您也可以使用我的图书馆 https://github.com/farhad2161/betterlog
这将表明,该方法名称,其中日志发生了。
的输出将是这样的
e/MYTAG: [com.kia.betterlogapp.MainActivity.writeDummyLog][label1]I am error message
对伊斯梅尔·迪Vita的答案改进,使其在logcat中显示为这样的超链接。
public class MyDebugTree extends Timber.DebugTree {
@Override
protected String createStackElementTag(StackTraceElement element) {
return String.format("(%s.java:%s)#%s",
super.createStackElementTag(element),
element.getLineNumber,
element.getMethodName);
}
}
或科特林
class MyDebugTree : Timber.DebugTree() {
override fun createStackElementTag(element: StackTraceElement): String? {
return String.format("(%s.kt:%s)#%s",
super.createStackElementTag(element),
element.lineNumber,
element.methodName)
}
}
或
class DebugTree : Timber.DebugTree() {
override fun createStackElementTag(element: StackTraceElement): String? {
return "(${super.createStackElementTag(element)}.kt:${element.lineNumber})#${element.methodName}"
}
}
它看起来棒极了。但我认为我们可以像这样更改格式: 'return String.format(“[%s#%s:%s]”, super.createStackElementTag(element), element.getMethodName(), element.getLineNumber ());' 因此,我们可以复制该代码,然后使用CMD + O导航到该代码。 – quangson91
请注意,如果使用'.tag()。d()'样式来设置自定义标签,如'createStackElementTag'源代码注释中所述,即您需要移除'.tag()'使其工作。 –