2016-07-13 4 views
5

Когда журналы DebugTree, я вижу имя класса, однако, когда я создаю собственное дерево, тег равен null. Вот то, что мой заказ дерево выглядит следующим образом:Тег имеет значение null при использовании Timber

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 однако мне было интересно, если есть способ, я могу получить имя класс, который расширяет BaseActivity

ответ

4

по Jake Wharton:

tag является недействительным, если вы звоните tag(String) на сайте журнала или простираться от DebugTree (который вы Shou ldn't для ведения производства).

Поэтому перед каждым звонком необходимо добавить Timber.tag([class name]).

См. github.com/JakeWharton/timber/issues/122

Смежные вопросы