web-dev-qa-db-ja.com

android logcatは、チャットモジュールの行の期限切れメッセージをログに記録します

私はアプリケーションに関連するこの種のlogcatメッセージをたくさん受け取っています。

11-19 19:04:23.872 3327 3440 I chatty : uid=10085 com.xxxx.yyy expire 18 lines

これらのログメッセージとは何ですか?ここに実際のアプリケーションのlogcatログがありませんか?

54
AndRSoid

はい、これは、おそらく他のアプリケーションが大量のメッセージを送信したために、一部のメッセージが実際のログに記録されなかったことを示します。

これは、Marshmallow(?)のliblogの新しいもののようです。新しいロギングポリシーの明確な説明が見つからないか、実際にポリシーがある場合でも、変更は言及されています here

1秒に5行を超えるログを記録すると、アプリケーションがおしゃべりすぎると宣言しました。このdeveloper-verbose-debug-levelクラスのロギングスパムを生成しているアプリケーションの所有者に対してバグを提出してください。ログは256KBです。これは、アプリケーションがDOS攻撃を作成し、ログのタイムスパンを6秒(!)に短縮して、他のすべてに対して役に立たないことを意味します。

既存の回答のいずれも「実際のアプリケーションのlogcatログはここにありませんか?」の質問に実際に回答しなかったため、別の回答を追加します。

はい、ログはありません。アプリがlogcatによって「チャット」と見なすとすぐに( 1秒あたり5行以上)、アプリのログは折りたたまれます。

Logcatのアプリをホワイトリストに登録することで、この動作を回避できます。

adb logcat -P '<pid or uid of your app>'

次を実行して、現在のホワイトリストとブラックリストを印刷できます。

adb logcat -p

また、次のコマンドはlogcat統計を出力するのに役立ちます。

adb logcat -S

さらに、テスト中にコードから直接logcatのアプリを自動ホワイトリストに登録すると便利であることがわかりました。

int pid = Android.os.Process.myPid();
String whiteList = "logcat -P '" + pid + "'";
Runtime.getRuntime().exec(whiteList).waitFor();

詳細については、logcatの公式ドキュメントを参照してください here

34
Anton Malmygin

次を使用して、この動作を無効にできます。

adb logcat -P ""
8
Dan Schmitt

次を使用して、この動作を無効にできます。

adb logcat -P ""

または設定により

setprop ro.logd.filter disable

setprop persist.logd.filter disable 

コードは次の場所で確認できます

http://androidxref.com/7.1.2_r36/xref/system/core/logd/LogWhiteBlackList.cpp

5
nkalra0123