web-dev-qa-db-ja.com

Crashlyticsを使用したロギング

複数のCrashlytics.log()コマンドを使用しています。例:

_Crashlytics.log("This is message 1");
Crashlytics.log("This is message 2"); 
_

しかし、ダッシュボードでクラッシュが発生すると、「これはメッセージ1です」のみが表示され、「これはメッセージ2です」は表示されません。 Crashlyticsログには最初のログのみが表示され、その後のログは表示されませんか、それとも何か問題がありますか?複数のCrashlytics.log()コマンドを使用するにはどうすればよいですか。

16
user3424346

ログメッセージは例外を除いて保存されます。したがって、Crashlytics.log("1");は例外なく何もしません。

あなたはそのように発砲する必要があります:

Crashlytics.log(Log.ERROR, "YourTAG", "YourMessage");
Crashlytics.logException(new Throwable("YourERROR"));
28
xnagyg

他の通行人に、追加のログはセッションごとにのみ表示できるというメモを追加したいと思います。特定の問題で、View All Sessionsボタンをクリックすると、キーとログの追加情報が表示されます。ファブリックによって保持されているすべてのログがここに表示されるため、例外の前に何度もログに記録できます。これは私が気付くのに驚くほど長い時間がかかりました。

他の人が気づき、文書化されているように、Crashlyticsはスロー可能オブジェクトがlogExceptionを介してログに記録されるまでログレポートを送信しない場合があります。ログがその画面に表示されない場合は、この点に注意してください。

2
Allan W

Crashlyticsログシステムを使用していますが、複数のログを表示できます。実際、クラッシュポイントの前にアプリに追加したすべてのログを見ることができます。

私の推測では、「メッセージ2」のログ行の前にアプリがクラッシュしていると思います。

1
PedroDuran

Crashlyticsがログメッセージを非同期で書き込んでいるようです。したがって、Crashlytics.log()を使用すると、常に競合状態が発生します。

クラッシュする前に短い(そして醜い)睡眠をしていることに応じて、この問題を解決するかもしれません:

Crashlytics.log("1");
Crashlytics.log("2");
try {
    Thread.sleep(1000);
} catch (InterruptedException e) {
    // NOP: Ignored!
}
throw new RuntimeException("Failed directly after logging.");

または、代わりにカスタムキーを使用できます。

Crashlytics.setString("SOME_IMPORTANT_VALUE", "1");
1
Sven

Crashlytics docs によると:

クラッシュレポートの送信がユーザーのデバイスに与える影響を最小限に抑えるために、Crashlyticsログの最大サイズは64KBです。ログが64KBを超えると、このしきい値を維持するために、ログに記録された最も古い値が削除されます。

2番目のメッセージplusの最初のメッセージが64KBを超えると、最初のメッセージはドロップされます。

0
Manuel

これによると answer

アプリケーションを再起動するとログが表示されます。

0
amir133