jest możliwe zalogować bieżący numer linii i nazwy metody z wykorzystaniem biblioteki TimberLog nazwa metody i numer linii w Timber
oczekiwany wynik logcat:
ismaeldivita.myapp I/[L:22] [M:onResume] [C:HomeActivity]: Praise the log!
jest możliwe zalogować bieżący numer linii i nazwy metody z wykorzystaniem biblioteki TimberLog nazwa metody i numer linii w Timber
oczekiwany wynik logcat:
ismaeldivita.myapp I/[L:22] [M:onResume] [C:HomeActivity]: Praise the log!
odpowiedzi na moje własne pytanie.
Wystarczy utworzyć nową klasę 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));
}
}
I posadzić swoje drzewo drewnem:
public class App extends Application {
@Override
public void onCreate(){
super.onCreate();
if (BuildConfig.DEBUG) {
Timber.plant(new MyDebugTree());
} else {
//TODO plant your Production Tree
}
}
}
Można również użyć moja biblioteka https://github.com/farhad2161/betterlog
To pokaże nazwę metoda, w której rejestracja się wydarzyła.
Wyjście będzie coś takiego
e/MYTAG: [com.kia.betterlogapp.MainActivity.writeDummyLog][label1]I am error message
poprawiając Ismael Di Vita odpowiedź tak wyświetla w LogCat jako hiperłącze takiego.
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);
}
}
lub Kotlin
class MyDebugTree : Timber.DebugTree() {
override fun createStackElementTag(element: StackTraceElement): String? {
return String.format("(%s.kt:%s)#%s",
super.createStackElementTag(element),
element.lineNumber,
element.methodName)
}
}
lub
class DebugTree : Timber.DebugTree() {
override fun createStackElementTag(element: StackTraceElement): String? {
return "(${super.createStackElementTag(element)}.kt:${element.lineNumber})#${element.methodName}"
}
}
Jego wyglądają wspaniale. Ale myślę, że możemy zmienić format podobny do tego: 'powrotu string.Format ("[% s #% s:% s]", super.createStackElementTag (element), element.getMethodName(), element.getLineNumber()); ' Możemy skopiować ten kod, a następnie użyć CMD + O, aby przeglądać ten kod. – quangson91
Zauważ, że to nie zadziała, jeśli użyjesz '.tag(). D()' styl do ustawienia niestandardowego znacznika, jak podano w komentarzu do kodu źródłowego 'createStackElementTag', tzn. Musisz usunąć' .tag() ', aby to działało . –