18

Timber ライブラリを使用して現在の行番号とメソッド名を記録することは可能ですか?

予想される LogCat の結果:

ismaeldivita.myapp I/[L:22] [M:onResume] [C:HomeActivity]: Praise the log!
4

5 に答える 5

41

私自身の質問に答えます。

新しい 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
        }
    }
}
于 2016-07-31T23:57:48.253 に答える
4

それが、Kotlinを使用してApplicationクラスで解決した方法です:

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}"
            }
        })
    }
}
于 2020-01-26T07:06:19.820 に答える