2016-07-13 44 views
5

Quando i registri DebugTree, vedo il nome della classe, tuttavia quando creo un albero personalizzato, il tag è null. Ecco ciò che il mio albero personalizzato appare come:Il tag è nullo quando si utilizza il legname

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); 
    } 
} 
} 

Tuttavia anche dal DebugTree, il tag che viene generato è BaseActivity perché viene dal BaseActivity però mi chiedevo se ci fosse un modo per ottenere il nome di la classe che estende BaseActivity

risposta

4

Secondo Jake Wharton:

il tag è nulla a meno che non si chiama tag(String) presso il sito di registro o si estende da DebugTree (che si shou Non lo faccio per la registrazione di produzione).

Pertanto è necessario aggiungere Timber.tag([class name]) prima di ogni chiamata.

Vedi github.com/JakeWharton/timber/issues/122

Problemi correlati