2013-04-16 15 views
6

uygulamasını gösterir. Uygulamam istisnaları ve kilitlenmeleri (diğer öğelerin arasında) izlemek için Google Analytics'i kullanıyor. Ben stacktrace almak için bu işlevi kullanın: istisnalar bahsederkengoogle analytics kilitlenme raporu, yalnızca ilk satırında

public static void sendErrorReportViaGoogleAnalytics(Exception e) { 

    e.printStackTrace(); 
    Tracker myTracker = EasyTracker.getTracker(); 
    myTracker.sendException(getDescription(e), false); 
} 

public static String getDescription(Exception t) { 

    final StringBuilder result = new StringBuilder(); 
    result.append(t.toString()); 
    result.append(','); 
    String oneElement; 

    for (StackTraceElement element : t.getStackTrace()) { 
     oneElement = element.toString(); 
     result.append(oneElement); 
     result.append(","); 
    } 

    return result.toString(); 
} 

Bu iyi çalışır, ben sadece benim istisna işleme kodlarının yakalamak kısmında sendErrorReportViaGoogleAnalytics() diyoruz, ama çöker gelince, ben sadece Ben EasyTracker kullanıyorum olarak

Binary XML file line #11: Error inflating class fragment 

gibi stacktrace bir satır olsun ben analytics.xml içinde

<bool name="ga_reportUncaughtExceptions">true</bool> 

ayarlayın.

Çökme durumunda tam stacktrace'i almak için ne yapmalıyım?

+0

Ben de analitik çöker izlemek istiyoruz. AFIK sadece ilk 200bayt'ı takip etmek mümkündür. Tag-Manager'ı kullandığımdan beri, @ Raanan'ın cevabındaki özelliği kullanamıyorum. Daha fazlasını biliyor musun? – rekire

cevap

3

sen aslında sadece dokümanlar sizi gönderebilir sonra çöküyor yakalamak için ne yaptığını açıklamak olmadığı için: https://developers.google.com/analytics/devguides/collection/android/v2/exceptions

Eğer EasyTracker kullanıyorsanız, ilan edebilir:

<bool name="ga_reportUncaughtExceptions">true</bool> 

aksi halde ExceptionReporter sınıfını tarif edildiği gibi uygulayabilir ve iş parçacığına ekleyebilirsiniz.

+4

Cevabınız için çok teşekkürler. İstisnaları izlemek için true kullanıyorum, ancak bu yalnızca yığınların ilk satırını günlüğe kaydeder. – Analizer

+0

Bağlantıda, ExceptionParser seçeneğini işaretleyin ve bu bir yanıtla bir kopyasıdır (ExceptionParser kullanarak geçici çözüm): http://stackoverflow.com/questions/14009883/exception-stack-trace-lost-in-google-analytics -v2-for-android – Raanan

+0

Çok teşekkürler Raanan, bunu kontrol edip en kısa zamanda size geri döneceğim. – Analizer

4

Sadece bu sorunla karşı karşıya. Verilen kodu, özel ExceptionReporter'ı yakalanmamış istisnalar için ayarlamak için projenizin BaseApplication.onCreate() yöntemine veya başka bir yere yapıştırmanız yeterlidir. Ve analytics.xml'de belirtilen bayrağı bildirmeyi unutmayın.

<bool name="ga_reportUncaughtExceptions">true</bool> 

Özel yakalanmamış istisnalar muhabir:

ExceptionReporter myHandler = 
     new ExceptionReporter(EasyTracker.getInstance(this), GAServiceManager.getInstance(), 
           Thread.getDefaultUncaughtExceptionHandler(), this); 

    StandardExceptionParser exceptionParser = 
      new StandardExceptionParser(getApplicationContext(), null) { 
        @Override 
        public String getDescription(String threadName, Throwable t) { 
         return "{" + threadName + "} " + Log.getStackTraceString(t); 
        } 
       }; 

    myHandler.setExceptionParser(exceptionParser); 

    // Make myHandler the new default uncaught exception handler. 
    Thread.setDefaultUncaughtExceptionHandler(myHandler); 
+1

Bu size ikiye katlanmış raporlar vermez mi? Bunu önlemek için bool'u yanlış olarak ayarlamanız gerekmez mi? –

+0

Hala analytics.xml bu satıra sahip: ' true' Ve raporlarda kopya yok. – sky

+1

Benim için de "yanlış" ile çalışıyor gibi görünüyor. Bunu onaylamak için deneyebilir misin? –