9

DebugTreeログにはクラス名が表示されますが、カスタム ツリーを作成すると、タグはnull. ここに私のカスタムツリーがどのように見えるか:

public class CrashlyticsTree extends Timber.Tree {
private static final String CRASHLYTICS_KEY_PRIORITY = "priority";
private static final String CRASHLYTICS_KEY_TAG = "tag";
private static final String CRASHLYTICS_KEY_MESSAGE = "message";

@Override
protected boolean isLoggable(int priority) {
    if (priority == Log.VERBOSE || priority == Log.DEBUG || priority == Log.INFO) {
        return false;
    }

    // only log WARN(Timber.w), ERROR(Timber.e), or WTF(Timber.wtf)
    return true;
}

@Override
protected void log(int priority, @Nullable String tag, @Nullable String message, @Nullable Throwable t) {
    if(User.CurrentUser.isLoggedIn()){
        Crashlytics.setUserIdentifier(Long.toString(User.CurrentUser.getUserId()));
    }

    Crashlytics.setInt(CRASHLYTICS_KEY_PRIORITY, priority);
    Crashlytics.setString(CRASHLYTICS_KEY_TAG, tag);
    Crashlytics.setString(CRASHLYTICS_KEY_MESSAGE, message);

    if (t == null) {
        Crashlytics.logException(new Exception(message));
    } else {
        if(!TextUtils.isEmpty(message)){
            Crashlytics.log(priority, tag, message);
        }
        Crashlytics.logException(t);
    }
}
}

ただし、DebugTree からでも生成されるBaseActivityタグBaseActivity

4

3 に答える 3

9

ジェイク・ウォートンによると:

ログ サイトで呼び出すか、そこから拡張しない限り、tagは null です(運用ログではこれを行うべきではありません)。tag(String)DebugTree

Timber.tag([class name])したがって、各呼び出しの前に追加する必要があります。

github.com/JakeWharton/timber/issues/122を参照してください。

于 2016-09-14T18:02:42.993 に答える