2016-07-31 17 views

Odpowiedz

13

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 
     } 
    } 
} 
+2

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

+0

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 . –

-2

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 
0

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}" 
} 
} 
Powiązane problemy