2016-07-31 16 views

回答

13

回答我的问题。

只需创建一个新的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 
     } 
    } 
} 
+2

它看起来棒极了。但我认为我们可以像这样更改格式: 'return String.format(“[%s#%s:%s]”, super.createStackElementTag(element), element.getMethodName(), element.getLineNumber ());' 因此,我们可以复制该代码,然后使用CMD + O导航到该代码。 – quangson91

+0

请注意,如果使用'.tag()。d()'样式来设置自定义标签,如'createStackElementTag'源代码注释中所述,即您需要移除'.tag()'使其工作。 –

-2

您也可以使用我的图书馆 https://github.com/farhad2161/betterlog

这将表明,该方法名称,其中日志发生了。

的输出将是这样的

e/MYTAG: [com.kia.betterlogapp.MainActivity.writeDummyLog][label1]I am error message 
0

对伊斯梅尔·迪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}" 
} 
}