Ism*_*ita 12 android timber-android
是否可以使用Timber库记录当前行号和方法名称?
预期的LogCat结果:
ismaeldivita.myapp I/[L:22] [M:onResume] [C:HomeActivity]: Praise the log!
Run Code Online (Sandbox Code Playgroud)
Ism*_*ita 32
回答我自己的问题.
只需创建一个新的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));
}
}
Run Code Online (Sandbox Code Playgroud)
在树林里种植你的树:
public class App extends Application {
@Override
public void onCreate(){
super.onCreate();
if (BuildConfig.DEBUG) {
Timber.plant(new MyDebugTree());
} else {
//TODO plant your Production Tree
}
}
}
Run Code Online (Sandbox Code Playgroud)
hum*_*zed 14
对Ismael Di Vita进行改进,以便在logcat中显示为这样的超链接.
public class MyDebugTree extends Timber.DebugTree {
@Override
protected String createStackElementTag(StackTraceElement element) {
return String.format("(%s:%s)#%s",
element.getFileName(),
element.getLineNumber(),
element.getMethodName());
}
}
Run Code Online (Sandbox Code Playgroud)
或者对于kotlin
class LineNumberDebugTree : Timber.DebugTree() {
override fun createStackElementTag(element: StackTraceElement): String? {
return "(${element.fileName}:${element.lineNumber})#${element.methodName}"
}
Run Code Online (Sandbox Code Playgroud)
}
注意:使用element.fileName而不是element.className,因此它可以在kotlin中用于在类外部进行日志记录
来自我的utils lib
这就是我在我的应用程序类中使用 Kotlin 解决这个问题的方法:
class App : Application() {
override fun onCreate() {
super.onCreate()
initLogger()
}
private fun initLogger() {
if (BuildConfig.DEBUG) {
Timber.plant(object : Timber.DebugTree() {
override fun createStackElementTag(element: StackTraceElement): String? {
return "(${element.fileName}:${element.lineNumber})#${element.methodName}"
}
})
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2709 次 |
| 最近记录: |